Joined: 22 Jun 2007 Posts: 3 Location: andhra pradesh
Hi,
I converted successfully Assembler subroutine with AMODE 31 compiler option.
when I was calling(staic call) Assembler subroutine routine from CICS PROGRAM, facing the above abend. Could any one help me in solving the above issue.
Joined: 18 Jul 2007 Posts: 2146 Location: At my coffee table
No message number?
Abended in the newly converted Assembler routine?
We need more information.....
Is STOR the abcode?
Or is "STOR - OPCODE NOT FOUND" a generated message?
Joined: 22 Jun 2007 Posts: 3 Location: andhra pradesh
Thanks for your reply. it is needful to us.
This is online cics program which is calling assembler subroutine. Here I am giving information.
in xpeditor ... this is abend aid information
The transaction was terminated because Xpediter/CICS intercepted a Storage
Violation within program SUBASM. The Storage Violation occurred because:
an invalid opcode was encountered.
The contents of the following report reflect the conditions present at the
time of the Storage Violation.
Next Sequential Instruction
The next sequential instruction to be executed in program SUBASM was at
displacement 0000003C.
The program was compiled on 04MAY2009 and is 000414 bytes long. It is part
of load module PMCS01C which was loaded from SLCDEVNT.DMIC.SLC1.DEVEL.LO2.
It was link edited on 04MAY2009 . The load module is 006368 bytes long. The
program AMODE is 31. The program RMODE is ANY.
The execution key for this program was USER_KEY.
Last Call or EXEC CICS Command
The last call or 'EXEC CICS' command was issued from program SUBASM at
displacement 0000003A.
-------------------------------------------------------------------------------- while i was using xpeditor i got stuck in this line
while i was doing testing(xped) , i got stuck in below statement.
+ BALR 14,15 OBTAIN STORAGE @F8E1S @L
SLCDEVNT.DMIC.SLC1.DEVEL.LO2
Code:
+ DC AL2(DFHEIEND-DFHEISTG) LENGTH OF STORAGE @L
+ DC H'0' Parameter list version number @P
+ L 15,=V(DFHEAI0) @F8E1S @L
+ BALR 14,15 OBTAIN STORAGE @F8E1S @L Here**
+ ST 13,DFHEISA-DFHEISTG+4(,1) CHAIN TO CALLER'S @F8E1S @L
+ LR 15,1 ADDRESS OF STORAGE @F8E1S @L
+ ICM 1,B'1111',24(13) RESTORE INPUT REGISTER 1 @F8E1S @L
+ BZ *+10 IF ARGUMENT LIST EXISTS @L
+ MVC DFHEIBP-DFHEISTG(L'DFHEIBP+L'DFHEICAP,15),0(1)
+ THEN COPY EIB AND CA PTRS @L
+*********************************************************************
-----------------------------------------------------------------------------
this is the information of online program .here i am giving number 10058 through transaction.
Code:
05 STD-NUM-TEST.
07 STD-NUM-FIELD PIC S9(16).
07 FILLER PIC X(2).
07 STD-NUM-CODE PIC X.
88 STD-NUM-UNSIGNED VALUE ' '.
88 STD-NUM-SIGNED VALUE 'S'.
88 STD-NUM-IS-VALID VALUE 'G'.
88 STD-NUM-IS-BAD VALUE 'B'.
07 STD-NUM-DISPLAY PIC X(16).
CALL 'SUBASM' USING STD-NUM-TEST.
* THIS IS A STATIC CALL SUB PROGRAM AND SHOULD BE ASSEMBLED WITHOUT
* USING THE CICS TRANSLATOR. IT IS LINK EDITED WITH THE CALLING
* PROGRAM, WHICH SHOULD BE COBOL 2 OR BETTER.
*----------------------------------------------*
SUBASM CSECT
SUBASM AMODE 31 SELECT 31 BIT ADDRESSING MODE
SUBASM RMODE ANY SELECT ANY RESIDENCY MODE
USING *,R15
DS 0H
STM R14,R12,12(R13) SAVE CALLING PROGRAM REGISTERS
B STRT0001
DC CL8'PMPM02A'
DC C'&SYSTIME'
DC C' '
DC C'&SYSDATE'
SAVE18F DC 18F'0'
**
STRT0001 DS 0H
LR R12,R15 LOAD BASE REGISTER
DROP R15
USING SUBASM,R12 R12 IS BASE REG
LA R15,SAVE18F POINT TO SAVE AREA
ST R13,4(0,R15) CHAIN SAVE AREAS
ST R15,8(0,R13) X
LR R13,R15 X
**
L R5,0(,R1) LOAD PARM ADDRESS
TRT 1(16,R5),TRTABLE2 * * * * * * * * * * *
LR R10,R1 *
SR R10,R5 * FIND ACTUAL FIELD LENGTH
CH R10,=H'17' *
BL LENOK *
LH R10,=H'16' * * * * * * * * * * *
**
------------------------------------------------------------ 00001000
**
RTRN DS 0H
L R13,4(,R13)
LM R14,R12,12(R13) RESTORE REGS
SR R15,R15
BR 14
Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
Because the comments indicate that this sub-program should NOT be Assembled using the CICS Translator, you may find that R15 may contain junk, as the VCON for "DFHEAI0" has not be resolved by the Linkage Editor at time of Assembly.
Check your Linkage Editor for any error-message which indicates "Unresolved External" entries.
Why are you Assembling this sub-program using the CICS Translator first?
The comments/instructions say that you should not.
Also, if I were you, I would pass reuseable storage from COBOL to be used by Assembler as its own working-storage. If you ever migrate to an "OPENAPI" and/or "THREADSAFE" environment (which incidentally, is IBM's long term strategy), a statically-called program using its own program-storage (IE: Non-Reentrant), will bite you, if the program is running off an L8 and/or L9 TCB.
Joined: 22 Jun 2007 Posts: 3 Location: andhra pradesh
Hi all,
thanks for your response. Please help me this issue.
In change man, it works fine while demoting both program and subroutine (using the production version). But it got abended with STOR- OPCODE NOT FOUND while promoting both program and subroutine.
while i was expediting the assembler subroutine(static call) ,macro DFHEIENT is expanded before executing the program. In DFHEIENT expansion, i got stuck at this below statement
L 15,=V(DFHEAI0) @F8E1S @L
+ BALR 14,15 Here we are using Z0S 1.73 COMPILER
THIS IS THE REMAINING CODE
ERROR DS 0H
MVI 18(R5),C'B' * TELL CALLER IT"S BAD
B RTRN *
**
DS 0H
MVCIT MVC 19(1,R5),0(R14) *** MOVE DISPLAY DATA IN
**
**
DS 0D
TRTABLE DC 256X'FF'
ORG TRTABLE+C'0' * ONLY ACCEPT 0-9
DC 10X'00'
ORG
TRTABLE2 DC 256X'00'
ORG TRTABLE2+C' ' * LOCATE FIELD LENGTH (1ST BLNK)
DC C' '
ORG
Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
The previously posted program's source-code comments indicate that you should NOT pass this program through the CICS translator, but again, you're pointing to a failed instruction within the expanded DFHEIENT macro, which is a CICS/Assembler macro.
Please review the procedure that you're using to Assemble/Link this sub-program and ensure that you use the procedure which is for a non-CICS Assembly/Link (IE: BATCH).