Abending Subroutine



High Level Assembler(HLASM) for MVS & VM & VSE

Abending Subroutine

Postby RISCCISCInstSet » Mon Nov 12, 2012 4:07 am

I need to write a main program with a subroutine outside the main program. My problem is I've been spinning my wheels for some time in understanding how this works.

It needs to have the format

        MAIN SETUP
        CALL WRITE,(MSG),VL
        ENDIT
        DS     0F
        MSG   DC AL2(MSGE-­‐MSGB)
        MSGB DC C’some nice message’
        MSGE EQU *
        ...
        END   MAIN

WRITE CSECT
           …
          somehow move message
          OPEN  output
          L        2,0(,1)
          PUT    output,message
          CLOSE output
          RETURN (14,12),T,RC=0
          END


When I call the subroutine, it'll always abend. That's been a fact of life for me for some time and I haven't found how to deal with this with materials I had and came up with.

Do you have any tips or links I can use; thanks.
RISCCISCInstSet
User avatar
RISCCISCInstSet
 
Posts: 121
Joined: Mon Oct 17, 2011 1:46 pm
Has thanked: 146 times
Been thanked: 0 time

Re: Abending Subroutine

Postby steve-myers » Mon Nov 12, 2012 5:59 am

RISCCISCInstSet wrote:I need to write a main program with a subroutine outside the main program. My problem is I've been spinning my wheels for some time in understanding how this works.

It needs to have the format

        MAIN SETUP
        CALL WRITE,(MSG),VL
        ENDIT
        DS     0F
        MSG   DC AL2(MSGE-­‐MSGB)
        MSGB DC C’some nice message’
        MSGE EQU *
        ...
        END   MAIN

WRITE CSECT
           …
          somehow move message
          OPEN  output
          L        2,0(,1)
          PUT    output,message
          CLOSE output
          RETURN (14,12),T,RC=0
          END


When I call the subroutine, it'll always abend. That's been a fact of life for me for some time and I haven't found how to deal with this with materials I had and came up with.

Do you have any tips or links I can use; thanks.
  • The OPEN macro in WRITE destroys reg 1 unless you have actually moved the message in your code marked, "somehow move message."
  • You don't show us the DCB, the data area marked as message, or the code that allegedly moved the message. One hopes the WRITE routine looks something like this -
    WRITE    CSECT                     DEFINE PROGRAM CSECT
             USING *,2                 ESTABLISH ADDRESSABILITY
             SAVE  (14,2),,*           SAVE REGISTERS
             LR    2,15                COPY ENTRY POINT ADDR TO REG 2
             LA    15,SAVEAREA         LOAD ADDR OF THE NEW SAVE AREA
             ST    15,8(,13)           ADD NEW SAVE AREA TO
             ST    13,4(,15)            THE SAVE AREA CHAIN
             LR    13,15               ESTABLISH NEW SAVE AREA POINTER
             LA    0,2(,1)             COMPUTE ADDR OF MSG TEXT
             LH    1,0(,1)             LOAD MESSAGE LENGTH
             ICM   1,B'1000',MESSAGE   LOAD FILL CHARACTER
             LA    15,L'MESSAGE-1      LOAD LENGTH OF MY MESSAGE AREA
             LA    14,MESSAGE+1        LOAD ADDR OF MY MESSAGE AREA
             MVCL  14,0                COPY TEXT TO MY MESSAGE AREA
             OPEN  (OUTPUT,OUTPUT)     OPEN THE DCB
             PUT   OUTPUT,MESSAGE      WRITE THE MESSAGE
             CLOSE OUTPUT              CLOSE THE DCB
             L     13,4(,13)           LOAD ADDR OF THE PREVIOUS SAVE AREA
             RETURN (14,2),T           RESTORE REGS & RETURN
    SAVEAREA DC    18F'0'              SAVE AREA
    OUTPUT   DCB   DSORG=PS,MACRF=PM,DDNAME=OUTPUT,RECFM=FBA,LRECL=121
    MESSAGE  DC    CL121' '            MY MESSAGE BUFFER
             END   ,
    My routine has not been tested in any way.
  • Most likely, when WRITE returns it will fall into ENDIT, which I presume is a macro that restores the registers and returns.

These users thanked the author steve-myers for the post:
RISCCISCInstSet (Mon Nov 12, 2012 6:07 am)
steve-myers
Global moderator
 
Posts: 2105
Joined: Thu Jun 03, 2010 6:21 pm
Has thanked: 4 times
Been thanked: 243 times

Re: Abending Subroutine

Postby RISCCISCInstSet » Mon Nov 12, 2012 6:12 am

Thank you for the guidance. I'll get back to you if I hit a snag I feel I seriously need help with. :)
RISCCISCInstSet
User avatar
RISCCISCInstSet
 
Posts: 121
Joined: Mon Oct 17, 2011 1:46 pm
Has thanked: 146 times
Been thanked: 0 time

Re: Abending Subroutine

Postby steve-myers » Mon Nov 12, 2012 6:25 am

After thinking about it, there's a problem with my code.
WRITE    CSECT                     DEFINE PROGRAM CSECT
         USING *,2                 ESTABLISH ADDRESSABILITY
         SAVE  (14,2),,*           SAVE REGISTERS
         LR    2,15                COPY ENTRY POINT ADDR TO REG 2
         LA    15,SAVEAREA         LOAD ADDR OF THE NEW SAVE AREA
         ST    15,8(,13)           ADD NEW SAVE AREA TO
         ST    13,4(,15)            THE SAVE AREA CHAIN
         LR    13,15               ESTABLISH NEW SAVE AREA POINTER
         L     1,0(,1)             ** NEW INSTRUCTION **
         LA    0,2(,1)             COMPUTE ADDR OF MSG TEXT
         LH    1,0(,1)             LOAD MESSAGE LENGTH
         ICM   1,B'1000',MESSAGE   LOAD FILL CHARACTER
         LA    15,L'MESSAGE-1      LOAD LENGTH OF MY MESSAGE AREA
         LA    14,MESSAGE+1        LOAD ADDR OF MY MESSAGE AREA
         MVCL  14,0                COPY TEXT TO MY MESSAGE AREA
         OPEN  (OUTPUT,OUTPUT)     OPEN THE DCB
         PUT   OUTPUT,MESSAGE      WRITE THE MESSAGE
         CLOSE OUTPUT              CLOSE THE DCB
         L     13,4(,13)           LOAD ADDR OF THE PREVIOUS SAVE AREA
         RETURN (14,2),T           RESTORE REGS & RETURN
SAVEAREA DC    18F'0'              SAVE AREA
OUTPUT   DCB   DSORG=PS,MACRF=PM,DDNAME=OUTPUT,RECFM=FBA,LRECL=121
MESSAGE  DC    CL121' '            MY MESSAGE BUFFER
         END   ,

These users thanked the author steve-myers for the post:
RISCCISCInstSet (Mon Nov 12, 2012 7:32 am)
steve-myers
Global moderator
 
Posts: 2105
Joined: Thu Jun 03, 2010 6:21 pm
Has thanked: 4 times
Been thanked: 243 times

Re: Abending Subroutine

Postby RISCCISCInstSet » Mon Nov 12, 2012 7:36 am

:arrow: Thanks.
RISCCISCInstSet
User avatar
RISCCISCInstSet
 
Posts: 121
Joined: Mon Oct 17, 2011 1:46 pm
Has thanked: 146 times
Been thanked: 0 time

Re: Abending Subroutine

Postby RISCCISCInstSet » Mon Nov 12, 2012 8:58 pm

Well I'm still having an issue in this program. How do I resolve the error INVALID OPTION OPERAND SPECIFIED-(name) or where do I look to find all the errors and how to deal with them?
RISCCISCInstSet
User avatar
RISCCISCInstSet
 
Posts: 121
Joined: Mon Oct 17, 2011 1:46 pm
Has thanked: 146 times
Been thanked: 0 time

Re: Abending Subroutine

Postby steve-myers » Mon Nov 12, 2012 10:59 pm

I think this is an Assembler message telling you an option you specified in the Assembler parameter text in the JCL you used to run the Assembler is bad. Also, perhaps, the Binder. The Assembler messages will be in HLASM V1R6 Programmer's Guide in the HLASM for z/OS & z/VM & z/VSE R6 Bookshelf.

These users thanked the author steve-myers for the post:
RISCCISCInstSet (Mon Nov 12, 2012 11:07 pm)
steve-myers
Global moderator
 
Posts: 2105
Joined: Thu Jun 03, 2010 6:21 pm
Has thanked: 4 times
Been thanked: 243 times

Re: Abending Subroutine

Postby RISCCISCInstSet » Mon Nov 12, 2012 11:20 pm

So you think the problem is in the JCL?

//C432110A JOB (ASSY),CLASS=A,MSGCLASS=A,
//   NOTIFY=&SYSUID,MSGLEVEL=(1,1)
//**************//
//CLG          EXEC PROC=ASMACLG
//C.SYSIN      DD DSN=C432110.ASM(LAB08),DISP=SHR
//C.SYSLIB     DD DSN=SYS1.MACLIB,DISP=SHR
//             DD DSN=C432110.MACLIB,DISP=SHR
//             DD DSN=SYS1.AMODGEN,DISP=SHR
//G.SYSPRINT   DD DSN=C432110.GEN(OUTPUT),DISP=SHR


                   J E S 2  J O B  L O G  --  S Y S T E M  S 0 W 1  --  N O D E  S V S C J E S 2
 
09.07.24 JOB07825 ---- MONDAY,    12 NOV 2012 ----
09.07.24 JOB07825  IRR010I  USERID C432110  IS ASSIGNED TO THIS JOB.
09.07.24 JOB07825  IEF677I WARNING MESSAGE(S) FOR JOB C432110A ISSUED
09.07.24 JOB07825  ICH70001I C432110  LAST ACCESS AT 09:07:02 ON MONDAY, NOVEMBER 12, 2012
09.07.24 JOB07825  $HASP373 C432110A STARTED - INIT 1    - CLASS A - SYS S0W1
09.07.25 JOB07825  -                                      -----TIMINGS (MINS.)------                          -----PAGING COUNTS----
09.07.25 JOB07825  -STEPNAME PROCSTEP    RC   EXCP   CONN       TCB       SRB  CLOCK          SERV  WORKLOAD  PAGE  SWAP   VIO SWAPS
09.07.25 JOB07825  -CLG      C           12    230     81       .00       .00     .0            90  BATCH        0     0     0     0
09.07.25 JOB07825  -CLG      L        FLUSH      0      0       .00       .00     .0                BATCH        0     0     0     0
09.07.25 JOB07825  -CLG      G        FLUSH      0      0       .00       .00     .0                BATCH        0     0     0     0
09.07.25 JOB07825  -C432110A ENDED.  NAME-                     TOTAL TCB CPU TIME=      .00 TOTAL ELAPSED TIME=    .0
09.07.25 JOB07825  $HASP395 C432110A ENDED
------ JES2 JOB STATISTICS ------
  12 NOV 2012 JOB EXECUTION DATE
            9 CARDS READ
          545 SYSOUT PRINT RECORDS
            0 SYSOUT PUNCH RECORDS
           41 SYSOUT SPOOL KBYTES
         0.01 MINUTES EXECUTION TIME
        1 //C432110A JOB (ASSY),CLASS=A,MSGCLASS=A,                               JOB07825
          //   NOTIFY=&SYSUID,MSGLEVEL=(1,1)
          //**************//
          IEFC653I SUBSTITUTION JCL - (ASSY),CLASS=A,MSGCLASS=A,NOTIFY=C432110,MSGLEVEL=(1,1)
        2 //CLG          EXEC PROC=ASMACLG
        3 XXASMACLG  PROC                                                         00001000
          XX*                                                                     00002000
          XX***   ASMACLG                                                         00003000
          XX*                                                                     00004000
          XX* THIS PROCEDURE RUNS THE HIGH LEVEL ASSEMBLER, LINK-EDITS THE        00005000
          XX* NEWLY ASSEMBLED PROGRAM AND RUNS THE PROGRAM AFTER                  00006000
          XX* THE LINK-EDIT IS ACCOMPLISHED.                                      00007000
          XX*                                                                     00008000
        4 XXC        EXEC PGM=ASMA90                                              00009000
        5 //C.SYSLIB     DD DSN=SYS1.MACLIB,DISP=SHR
          X/SYSLIB   DD  DSN=SYS1.MACLIB,DISP=SHR                                 00010000
        6 //             DD DSN=C432110.MACLIB,DISP=SHR
        7 //             DD DSN=SYS1.AMODGEN,DISP=SHR
        8 XXSYSUT1   DD  DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND),UNIT=VIO,    00011000
          XX             DCB=BUFNO=1                                              00012000
        9 XXSYSPRINT DD  SYSOUT=*                                                 00013000
       10 XXSYSLIN   DD  DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND),UNIT=VIO,         00014000
          XX             DISP=(MOD,PASS),                                         00015000
          XX             DCB=(BLKSIZE=3040,LRECL=80,RECFM=FBS,BUFNO=1)            00016000
       11 //C.SYSIN      DD DSN=C432110.ASM(LAB08),DISP=SHR
       12 XXL        EXEC PGM=HEWL,PARM='MAP,LET,LIST',COND=(8,LT,C)              00017000
       13 XXSYSLIN   DD  DSN=&&OBJ,DISP=(OLD,DELETE)                              00018000
       14 XX         DD  DDNAME=SYSIN                                             00019000
       15 XXSYSLMOD  DD  DISP=(,PASS),UNIT=SYSDA,SPACE=(CYL,(1,1,1)),             00020000
          XX             DSN=&&GOSET(GO)                                          00021000
       16 XXSYSUT1   DD  DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND),UNIT=VIO,    00022000
          XX             DCB=BUFNO=1                                              00023000
       17 XXSYSPRINT DD  SYSOUT=*                                                 00024000
       18 XXG        EXEC PGM=*.L.SYSLMOD,COND=((8,LT,C),(8,LT,L))                00025000
       19 //G.SYSPRINT     DD DSN=C432110.GEN(OUTPUT),DISP=SHR
 STMT NO. MESSAGE
        2 IEFC001I PROCEDURE ASMACLG WAS EXPANDED USING SYSTEM LIBRARY SYS1.PROCLIB
       18 IEF686I DDNAME REFERRED TO ON DDNAME KEYWORD IN PRIOR STEP WAS NOT RESOLVED
ICH70001I C432110  LAST ACCESS AT 09:07:02 ON MONDAY, NOVEMBER 12, 2012
IEF236I ALLOC. FOR C432110A C CLG
IEF237I 1001 ALLOCATED TO SYSLIB
IEF237I 0D33 ALLOCATED TO
IEF237I 1007 ALLOCATED TO
IGD100I VIO ALLOCATED TO DDNAME SYSUT1   DATACLAS (        )
IEF237I JES2 ALLOCATED TO SYSPRINT
IGD100I VIO ALLOCATED TO DDNAME SYSLIN   DATACLAS (        )
IEF237I 0D33 ALLOCATED TO SYSIN
IEF142I C432110A C CLG - STEP WAS EXECUTED - COND CODE 0012
IEF285I   SYS1.MACLIB                                  KEPT
IEF285I   VOL SER NOS= VTMVSC.
IEF285I   C432110.MACLIB                               KEPT
IEF285I   VOL SER NOS= VPWRKB.
IEF285I   SYS1.AMODGEN                                 KEPT
IEF285I   VOL SER NOS= VDMVSB.
IEF285I   SYS12317.T090724.RA000.C432110A.SYSUT1.H01   DELETED
IEF285I   C432110.C432110A.JOB07825.D0000101.?         SYSOUT
IEF285I   SYS12317.T090724.RA000.C432110A.OBJ.H01      PASSED
IEF285I   C432110.ASM                                  KEPT
IEF285I   VOL SER NOS= VPWRKB.
IEF373I STEP/C       /START 2012317.0907
IEF032I STEP/C       /STOP  2012317.0907
        CPU:     0 HR  00 MIN  00.03 SEC    SRB:     0 HR  00 MIN  00.00 SEC
        VIRT:   228K  SYS:   252K  EXT:    32768K  SYS:    11272K
IEF202I C432110A L CLG - STEP WAS NOT RUN BECAUSE OF CONDITION CODES
IEF272I C432110A L CLG - STEP WAS NOT EXECUTED.
IEF373I STEP/L       /START 2012317.0907
IEF032I STEP/L       /STOP  2012317.0907
        CPU:     0 HR  00 MIN  00.00 SEC    SRB:     0 HR  00 MIN  00.00 SEC
        VIRT:     0K  SYS:     0K  EXT:        0K  SYS:        0K
IEF202I C432110A G CLG - STEP WAS NOT RUN BECAUSE OF CONDITION CODES
IEF272I C432110A G CLG - STEP WAS NOT EXECUTED.
IEF373I STEP/G       /START 2012317.0907
IEF032I STEP/G       /STOP  2012317.0907
        CPU:     0 HR  00 MIN  00.00 SEC    SRB:     0 HR  00 MIN  00.00 SEC
        VIRT:     0K  SYS:     0K  EXT:        0K  SYS:        0K
IEF285I   SYS12317.T090724.RA000.C432110A.OBJ.H01      DELETED
IEF375I  JOB/C432110A/START 2012317.0907
IEF033I  JOB/C432110A/STOP  2012317.0907
        CPU:     0 HR  00 MIN  00.03 SEC    SRB:     0 HR  00 MIN  00.00 SEC
 
                                         High Level Assembler Option Summary                   (PTF UK82155)   Page    1
                                                                                            HLASM R6.0  2012/11/12 09.07
  No Overriding ASMAOPT Parameters
  No Overriding Parameters
  No Process Statements
 
 
  Options for this Assembly
  NOADATA
    ALIGN
  NOASA
    BATCH
    CODEPAGE(047C)
  NOCOMPAT
  NODBCS
  NODECK
    DXREF
    ESD
  NOEXIT
    FLAG(0,ALIGN,CONT,EXLITW,NOIMPLEN,NOPAGE0,PUSH,RECORD,NOSUBSTR,USING0)
  NOFOLD
  NOGOFF
  NOINFO
    LANGUAGE(EN)
  NOLIBMAC
    LINECOUNT(60)
    LIST(121)
    MACHINE(,NOLIST)
    MXREF(SOURCE)
    OBJECT
    OPTABLE(UNI,NOLIST)
  NOPCONTROL
  NOPESTOP
  NOPROFILE
  NORA2
  NORENT
    RLD
    RXREF
    SECTALGN(8)
    SIZE(MAX)
  NOSUPRWARN
    SYSPARM()
  NOTERM
  NOTEST
    THREAD
  NOTRANSLATE
    TYPECHECK(MAGNITUDE,REGISTER)
    USING(NOLIMIT,MAP,WARN(15))
  NOWORKFILE
    XREF(SHORT,UNREFS)
 
  No Overriding DD Names
 
                                              External Symbol Dictionary                                       Page    2
Symbol   Type   Id     Address  Length   Owner Id Flags Alias-of                            HLASM R6.0  2012/11/12 09.07
MAIN      SD 00000001 00000000 00000087             00
WRITE     ER 00000002
 
                                                                                                               Page    3
  Active Usings: None
  Loc  Object Code    Addr1 Addr2  Stmt   Source Statement                                  HLASM R6.0  2012/11/12 09.07
                                      1 MAIN    SETUP
000000                00000 00087     3+MAIN     CSECT                                                          01-SETUP
 
                                      5+* SAVE REGISTERS
                                      6+         SAVE  (14,12),,MAIN-11/12/12-09.07                             01-SETUP
000000 47F0 F018            00018     9+         B     24(0,15)                          BRANCH AROUND ID       02-SAVE
000004 13                            10+         DC    AL1(19)                           LENGTH OF IDENTIFIER   02-SAVE
000005 D4C1C9D560F1F161              11+         DC    CL8'MAIN-11/'                     IDENTIFIER             02-SAVE
00000D F1F261F1F260F0F9              12+         DC    CL8'12/12-09'                     IDENTIFIER             02-SAVE
000015 4BF0F7                        13+         DC    CL3'.07'                          IDENTIFIER             02-SAVE
000018 90EC D00C            0000C    14+         STM   14,12,12(13)                      SAVE REGISTERS         02-SAVE
 
                                     16+* ESTABLISH ADDRESSABILITY FOR PROGRAM
00001C 18CF                          17+         LR    12,15              ESTABLISH FIRST BASE REGISTER         01-SETUP
                 R:C  00000          18+         USING MAIN,12                                                  01-SETUP
 
                                     20+* ESTABLISH NEW SAVE AREA AND POINT 13 TO IT
                                     21+         GETMAIN R,LV=72                                                01-SETUP
00001E 4100 0048            00048    24+         LA    0,72(0,0)               LOAD LENGTH                      02-GETMA
000022 4510 C026            00026    25+         BAL   1,*+4                   INDICATE GETMAIN        @Z30EN9G 02-GETMA
000026 0A0A                          26+         SVC   10                      ISSUE GETMAIN SVC                02-GETMA
000028 5010 D008            00008    27+         ST    1,8(,13)           CHAIN NEW AND OLD                     01-SETUP
00002C 50D0 1004            00004    28+         ST    13,4(,1)                SAVE AREAS TOGETHER              01-SETUP
000030 9801 D014            00014    29+         LM    0,1,20(13)         RESTORE REGISTERS 0 AND 1             01-SETUP
000034 58D0 D008            00008    30+         L     13,8(,13)          LOAD ADDRESS OF NEW SAVE AREA         01-SETUP
 
                      00000          32+R0       EQU   0                                                        01-SETUP
                      00001          33+R1       EQU   1                                                        01-SETUP
                      00002          34+R2       EQU   2                                                        01-SETUP
                      00003          35+R3       EQU   3                                                        01-SETUP
                      00004          36+R4       EQU   4                                                        01-SETUP
                      00005          37+R5       EQU   5                                                        01-SETUP
                      00006          38+R6       EQU   6                                                        01-SETUP
                      00007          39+R7       EQU   7                                                        01-SETUP
                      00008          40+R8       EQU   8                                                        01-SETUP
                      00009          41+R9       EQU   9                                                        01-SETUP
                      0000A          42+R10      EQU   10                                                       01-SETUP
                      0000B          43+R11      EQU   11                                                       01-SETUP
                      0000C          44+R12      EQU   12                                                       01-SETUP
                      0000D          45+R13      EQU   13                                                       01-SETUP
                      0000E          46+R14      EQU   14                                                       01-SETUP
                      0000F          47+R15      EQU   15                                                       01-SETUP
                      00001          48+BO       EQU   1                                                        01-SETUP
                      00002          49+BP       EQU   2                                                        01-SETUP
                      00002          50+BH       EQU   2                                                        01-SETUP
                      00004          51+BL       EQU   4                                                        01-SETUP
                      00004          52+BM       EQU   4                                                        01-SETUP
                                                                                                               Page    4
  Active Usings: MAIN,R12
  Loc  Object Code    Addr1 Addr2  Stmt   Source Statement                                  HLASM R6.0  2012/11/12 09.07
                      00007          53+BNE      EQU   7                                                        01-SETUP
                      00007          54+BNZ      EQU   7                                                        01-SETUP
                      00008          55+BE       EQU   8                                                        01-SETUP
                      00008          56+BZ       EQU   8                                                        01-SETUP
                      0000B          57+BNL      EQU   11                                                       01-SETUP
                      0000B          58+BNM      EQU   11                                                       01-SETUP
                      0000D          59+BNH      EQU   13                                                       01-SETUP
                      0000D          60+BNP      EQU   13                                                       01-SETUP
                      0000E          61+BNO      EQU   14                                                       01-SETUP
 
                                     63         CALL   WRITE,(MSG),VL
000038                               65+         CNOP  0,4                                                      01-CALL
000038 47F0 C040            00040    66+         B     *+8                               BRANCH AROUND VCON     01-CALL
00003C 00000000                      67+IHB0007B DC    V(WRITE)                          ENTRY POINT ADDRESS    01-CALL
000040 4110 C048            00048    70+         LA    1,IHB0009                         LIST ADDRESS      @L1C 02-IHBOP
000044 47F0 C04C            0004C    71+         B     IHB0009A                          BYPASS LIST   @ZMC3742 02-IHBOP
000048                               72+IHB0009  DS    0F                                                       02-IHBOP
000048 80000074                      73+         DC    A(MSG+X'80000000')                                  @L2C 02-IHBOP
                      0004C          74+IHB0009A EQU   *                                                        02-IHBOP
00004C 58F0 C03C            0003C    75+         L     15,IHB0007B                       LOAD 15 WITH ENTRY ADR 01-CALL
000050 05EF                          76+         BALR  14,15                             BRANCH TO ENTRY POINT  01-CALL
                                     77         ENDIT
000052 58D0 D004            00004    79+         L     13,4(,13)                                                01-ENDIT
 
                                     81+* FREE DYNAMICALLY ACQUIRED SAVE AREA
000056 5810 D008            00008    82+         L     1,8(,13)                                                 01-ENDIT
                                     83+         FREEMAIN R,LV=72,A=(1)                                         01-ENDIT
00005A 4100 0048            00048    86+         LA    0,72(0,0)                         LOAD LENGTH            02-FREEM
00005E 4110 1000            00000    87+         LA    1,0(0,1)                          LOAD AREA ADDRESS      02-FREEM
000062 0A0A                          88+         SVC   10                                ISSUE FREEMAIN SVC     02-FREEM
 
                                     90+* RESTORE CALLING PROGRAMS REGISTERS, SET RETURN CODE, AND EXIT
                                     91+         RETURN (14,12),T,RC=0                                          01-ENDIT
000064 98EC D00C            0000C    94+         LM    14,12,12(13)                      RESTORE THE REGISTERS  02-RETUR
000068 9601 D00F      0000F          95+         OI    15(13),X'01'                      SET RETURN INDICATION  02-RETUR
00006C 41F0 0000            00000    96+         LA    15,0(0,0)                         LOAD RETURN CODE       02-RETUR
000070 07FE                          97+         BR    14                                RETURN                 02-RETUR
000074                               98         DS     0F
000074 0011                          99 MSG     DC     AL2(MSGE-MSGB)
000076 A296948540958983             100 MSGB    DC     C'some nice message'
                      00087         101 MSGE    EQU    *
000000                              102         END    MAIN
 
                                                 Relocation Dictionary                                         Page    5
   Pos.Id   Rel.Id   Address  Type  Action                                                  HLASM R6.0  2012/11/12 09.07
  00000001 00000002 0000003C   V 4    ST
  00000001 00000001 00000048   A 4     +
 
                               Ordinary Symbol and Literal Cross Reference                                     Page    6
Symbol   Length   Value     Id    R Type Asm  Program   Defn References                     HLASM R6.0  2012/11/12 09.07
IHB0007B      4 0000003C 00000001     V  V                67   75
IHB0009       4 00000048 00000001     F  F                72   70
IHB0009A      1 0000004C 00000001     U                   74   71B
MAIN          1 00000000 00000001     J                    3   18U  102
MSG           2 00000074 00000001     R  A                99   73
MSGB         17 00000076 00000001     C  C               100   99
MSGE          1 00000087 00000001     U                  101   99
WRITE         1 00000000 00000002     T                   67   67
 
                                  Unreferenced Symbols Defined in CSECTs                                       Page    7
  Defn  Symbol                                                                              HLASM R6.0  2012/11/12 09.07
    55  BE
    50  BH
    51  BL
    52  BM
    53  BNE
    59  BNH
    57  BNL
    58  BNM
    61  BNO
    60  BNP
    54  BNZ
    48  BO
    49  BP
    56  BZ
    32  R0
    33  R1
    42  R10
    43  R11
    44  R12
    45  R13
    46  R14
    47  R15
    34  R2
    35  R3
    36  R4
    37  R5
    38  R6
    39  R7
    40  R8
    41  R9
 
                                          Macro and Copy Code Source Summary                                   Page    8
 Con Source                                        Volume    Members                        HLASM R6.0  2012/11/12 09.07
  L1 SYS1.MACLIB                                   VTMVSC    CALL     FREEMAIN GETMAIN  IHBOPLTX RETURN   SAVE
                                                             SYSSTATE
  L2 C432110.MACLIB                                VPWRKB    ENDIT    SETUP
 
                                                      Using Map                                                Page    9
                                                                                            HLASM R6.0  2012/11/12 09.07
  Stmt  -----Location----- Action ----------------Using----------------- Reg Max     Last Label and Using Text
          Count      Id           Type          Value    Range     Id        Disp    Stmt
    18  0000001E  00000001 USING  ORDINARY    00000000 00001000 00000001  12 0004C     75 MAIN,12
 
                                   General Purpose Register Cross Reference                                    Page   10
 Register  References (M=modified, B=branch, U=USING, D=DROP, N=index)                      HLASM R6.0  2012/11/12 09.07
    0(0)      14    24M   29M   86M   94M
    1(1)      14    25M   27    28    29M   70M   82M   87M   87    94M
    2(2)      14    94M
    3(3)      14    94M
    4(4)      14    94M
    5(5)      14    94M
    6(6)      14    94M
    7(7)      14    94M
    8(8)      14    94M
    9(9)      14    94M
   10(A)      14    94M
   11(B)      14    94M
   12(C)      14    17M   18U   94M
   13(D)      14    27    28    29    30M   30    79M   79    82    94    95
   14(E)      14    76M   94M   97B
   15(F)       9    14    17    75M   76B   94M   96M
 
                                  Diagnostic Cross Reference and Assembler Summary                             Page   11
                                                                                            HLASM R6.0  2012/11/12 09.07
     No Statements Flagged in this Assembly
HIGH LEVEL ASSEMBLER, 5696-234, RELEASE 6.0, PTF UK82155
SYSTEM: z/OS 01.13.00              JOBNAME: C432110A    STEPNAME: CLG        PROCSTEP: C
Data Sets Allocated for this Assembly
 Con DDname   Data Set Name                                Volume  Member
  P1 SYSIN    C432110.ASM                                  VPWRKB  LAB08
  L1 SYSLIB   SYS1.MACLIB                                  VTMVSC
  L2          C432110.MACLIB                               VPWRKB
  L3          SYS1.AMODGEN                                 VDMVSB
     SYSLIN   SYS12317.T090724.RA000.C432110A.OBJ.H01
     SYSPRINT C432110.C432110A.JOB07825.D0000101.?
 
  32104K allocated to Buffer Pool       Storage required     528K
      8 Primary Input Records Read         6407 Library Records Read                  0 Work File Reads
      0 ASMAOPT Records Read                255 Primary Print Records Written         0 Work File Writes
      7 Object Records Written                0 ADATA Records Written
Assembly Start Time: 09.07.25 Stop Time: 09.07.25 Processor Time: 00.00.00.0112
Return Code 000
 
                                         High Level Assembler Option Summary                   (PTF UK82155)   Page    1
                                                                                            HLASM R6.0  2012/11/12 09.07
  No Overriding ASMAOPT Parameters
  No Overriding Parameters
  No Process Statements
 
 
  Options for this Assembly
  NOADATA
    ALIGN
  NOASA
    BATCH
    CODEPAGE(047C)
  NOCOMPAT
  NODBCS
  NODECK
    DXREF
    ESD
  NOEXIT
    FLAG(0,ALIGN,CONT,EXLITW,NOIMPLEN,NOPAGE0,PUSH,RECORD,NOSUBSTR,USING0)
  NOFOLD
  NOGOFF
  NOINFO
    LANGUAGE(EN)
  NOLIBMAC
    LINECOUNT(60)
    LIST(121)
    MACHINE(,NOLIST)
    MXREF(SOURCE)
    OBJECT
    OPTABLE(UNI,NOLIST)
  NOPCONTROL
  NOPESTOP
  NOPROFILE
  NORA2
  NORENT
    RLD
    RXREF
    SECTALGN(8)
    SIZE(MAX)
  NOSUPRWARN
    SYSPARM()
  NOTERM
  NOTEST
    THREAD
  NOTRANSLATE
    TYPECHECK(MAGNITUDE,REGISTER)
    USING(NOLIMIT,MAP,WARN(15))
  NOWORKFILE
    XREF(SHORT,UNREFS)
 
  No Overriding DD Names
 
                                              External Symbol Dictionary                                       Page    2
Symbol   Type   Id     Address  Length   Owner Id Flags Alias-of                            HLASM R6.0  2012/11/12 09.07
WRITE     SD 00000001 00000000 00000185             00
 
                                                                                                               Page    3
  Active Usings: None
  Loc  Object Code    Addr1 Addr2  Stmt   Source Statement                                  HLASM R6.0  2012/11/12 09.07
000000                00000 00185     2 WRITE    CSECT                     DEFINE PROGRAM CSECT
                 R:2  00000           4          USING *,2                 ESTABLISH ADDRESSABILITY
                                      5          SAVE  (14,2),,*           SAVE REGISTERS
000000 47F0 F00A            0000A     7+         B     10(0,15)                          BRANCH AROUND ID       01-SAVE
000004 05                             8+         DC    AL1(5)                                                   01-SAVE
000005 E6D9C9E3C5                     9+         DC    CL5'WRITE'                        IDENTIFIER             01-SAVE
00000A 90E2 D00C            0000C    10+         STM   14,2,12(13)                       SAVE REGISTERS         01-SAVE
00000E 182F                          11          LR    2,15                COPY ENTRY POINT ADDR TO REG 2
000010 41F0 20C4            000C4    12          LA    15,SAVEAREA         LOAD ADDR OF THE NEW SAVE AREA
000014 50F0 D008            00008    13          ST    15,8(,13)           ADD NEW SAVE AREA TO
000018 50D0 F004            00004    14          ST    13,4(,15)            THE SAVE AREA CHAIN
00001C 18DF                          15          LR    13,15               ESTABLISH NEW SAVE AREA POINTER
00001E 5820 1000            00000    16          L     2,0(,1)             LOAD PARAMETER
000022 4100 1002            00002    17          LA    0,2(,1)             COMPUTE ADDR OF MSG TEXT
000026 4810 1000            00000    18          LH    1,0(,1)             LOAD MESSAGE LENGTH
00002A BF18 210C            0010C    19          ICM   1,B'1000',MESSAGE   LOAD FILL CHARACTER
00002E 41F0 0078            00078    20          LA    15,L'MESSAGE-1      LOAD LENGTH OF MY MESSAGE AREA
000032 41E0 210D            0010D    21          LA    14,MESSAGE+1        LOAD ADDR OF MY MESSAGE AREA
000036 0EE0                          22          MVCL  14,0                COPY TEXT TO MY MESSAGE AREA
                                     23          OPEN  (OUTPUT,SYSPRINT)     OPEN THE DCB
000038                               25+         CNOP  0,4                      Align list to word              01-OPEN
000038 4D10 2040            00040    26+         BAS   1,*+8                    Load reg 1 with list address    01-OPEN
** ASMA254I *** MNOTE ***            28+     12,***  IHB002  INVALID OPTION OPERAND SPECIFIED-SYSPRINT          02-IHBER
                                     29          PUT   OUTPUT,MESSAGE      WRITE THE MESSAGE
                                     32+*                                                                 1@L1D
                                     33+*                                                                 1@L1D
00003C 4110 2064            00064    35+         LA    1,OUTPUT                          LOAD PARAMETER REG 1   02-IHBIN
000040 4100 210C            0010C    36+         LA    0,MESSAGE                         LOAD PARAMETER REG 0   02-IHBIN
000044 1FFF                          37+         SLR   15,15               CLEAR REGISTER FOR ICM          @L1A 01-PUT
000046 BFF7 1031            00031    38+         ICM   15,7,49(1)          LOAD PUT ROUTINE ADDRESS        @L1C 01-PUT
00004A 0DEF                          39+         BASR  14,15               LINK TO PUT ROUTINE             @L3C 01-PUT
                                     40          CLOSE OUTPUT              CLOSE THE DCB
00004C                               42+         CNOP  0,4                      ALIGN LIST TO FULLWORD          01-CLOSE
00004C 4D10 2054            00054    43+         BAS   1,*+8                    LOAD REG1 W/LIST ADDR           01-CLOSE
000050 80                            44+         DC    AL1(128)                 OPTION BYTE                     01-CLOSE
000051 000064                        45+         DC    AL3(OUTPUT)              DCB OR ACB ADDRESS              01-CLOSE
000054 0A14                          46+         SVC   20                       ISSUE CLOSE SVC                 01-CLOSE
000056 58D0 D004            00004    47          L     13,4(,13)           LOAD ADDR OF THE PREVIOUS SAVE AREA
                                     48          RETURN (14,2),T           RESTORE REGS & RETURN
00005A 98E2 D00C            0000C    50+         LM    14,2,12(13)                       RESTORE THE REGISTERS  01-RETUR
00005E 9601 D00F      0000F          51+         OI    15(13),X'01'                      SET RETURN INDICATION  01-RETUR
000062 07FE                          52+         BR    14                                RETURN                 01-RETUR
                                     54 OUTPUT  DCB   DDNAME=SYSPRINT,                                         X
                                                       LRECL=80,                                               X
                                                       DSORG=PS,                                               X
                                                       RECFM=FB,                                               X
                                                       MACRF=(PM),                                             X
                                                       BLKSIZE=160
                                     57+*                       DATA CONTROL BLOCK
                                     58+*
000064                               59+OUTPUT   DC    0F'0'          ORIGIN ON WORD BOUNDARY                   01-DCB
                                     60+*                       DIRECT ACCESS DEVICE INTERFACE
                                                                                                               Page    4
  Active Usings: WRITE,R2
  Loc  Object Code    Addr1 Addr2  Stmt   Source Statement                                  HLASM R6.0  2012/11/12 09.07
000064 0000000000000000              61+         DC    BL16'0'        FDAD, DVTBL                               01-DCB
000074 00000000                      62+         DC    A(0)           KEYLEN, DEVT, TRBAL                       01-DCB
                                     63+*                       COMMON ACCESS METHOD INTERFACE
000078 00                            64+         DC    AL1(0)         BUFNO, NUMBER OF BUFFERS                  01-DCB
000079 000001                        65+         DC    AL3(1)         BUFCB, BUFFER POOL CONTROL BLOCK          01-DCB
00007C 0000                          66+         DC    AL2(0)         BUFL, BUFFER LENGTH                       01-DCB
00007E 4000                          67+         DC    BL2'0100000000000000' DSORG, DATA SET ORGANIZATION       01-DCB
000080 00000001                      68+         DC    A(1)           IOBAD FOR EXCP OR RESERVED                01-DCB
                                     69+*                       FOUNDATION EXTENSION
000084 00                            70+         DC    BL1'00000000'  BFTEK, BFALN, DCBE INDICATORS             01-DCB
000085 000001                        71+         DC    AL3(1)         EODAD (END OF DATA ROUTINE ADDRESS)       01-DCB
000088 90                            72+         DC    BL1'10010000'  RECFM (RECORD FORMAT)                     01-DCB
000089 000000                        73+         DC    AL3(0)         EXLST (EXIT LIST ADDRESS)                 01-DCB
                                     74+*                       FOUNDATION BLOCK
00008C E2E8E2D7D9C9D5E3              75+         DC    CL8'SYSPRINT'  DDNAME                                    01-DCB
000094 02                            76+         DC    BL1'00000010'  OFLGS (OPEN FLAGS)                        01-DCB
000095 00                            77+         DC    BL1'00000000'  IFLGS (IOS FLAGS)                         01-DCB
000096 0050                          78+         DC    BL2'0000000001010000' MACR (MACRO FORMAT)                01-DCB
                                     79+*                       BSAM-BPAM-QSAM INTERFACE
000098 00                            80+         DC    BL1'00000000'  OPTCD, OPTION CODES                       01-DCB
000099 000001                        81+         DC    AL3(1)         CHECK OR INTERNAL QSAM SYNCHRONIZING RTN. 01-DCB
00009C 00000001                      82+         DC    A(1)           SYNAD, SYNCHRONOUS ERROR RTN. (3 BYTES)   01-DCB
0000A0 0000                          83+         DC    H'0'           INTERNAL ACCESS METHOD FLAGS              01-DCB
0000A2 00A0                          84+         DC    AL2(160)       BLKSIZE, BLOCK SIZE                       01-DCB
0000A4 00000000                      85+         DC    F'0'           INTERNAL ACCESS METHOD FLAGS              01-DCB
0000A8 00000001                      86+         DC    A(1)           INTERNAL ACCESS METHOD USE                01-DCB
                                     87+*                            QSAM INTERFACE
0000AC 00000001                      88+         DC    A(1)           EOBAD                                     01-DCB
0000B0 00000001                      89+         DC    A(1)           RECAD                                     01-DCB
0000B4 0000                          90+         DC    H'0'           QSWS (FLAGS) AND EITHER DIRCT OR BUFOFF   01-DCB
0000B6 0050                          91+         DC    AL2(80)        LRECL                                     01-DCB
0000B8 00                            92+         DC    BL1'00000000'  EROPT, ERROR OPTION                       01-DCB
0000B9 000001                        93+         DC    AL3(1)         CNTRL                                     01-DCB
0000BC 00000000                      94+         DC    H'0,0'         RESERVED AND PRECL                        01-DCB
0000C0 00000001                      95+         DC    A(1)           EOB, INTERNAL ACCESS METHOD FIELD         01-DCB
                                     97 *SAVEAREA DC    18F'0'              SAVE AREA
0000C4                               98 SAVEAREA DS    18F
                                    100 *MESSAGE  DC    CL121' '            MY MESSAGE BUFFER
00010C                              101 MESSAGE  DS    CL121
                                    102         END
 
                                                 Relocation Dictionary                                         Page    5
   Pos.Id   Rel.Id   Address  Type  Action                                                  HLASM R6.0  2012/11/12 09.07
  00000001 00000001 00000051   A 3     +
 
                               Ordinary Symbol and Literal Cross Reference                                     Page    6
Symbol   Length   Value     Id    R Type Asm  Program   Defn References                     HLASM R6.0  2012/11/12 09.07
MESSAGE     121 0000010C 00000001     C  C               101   19    20    21    36
OUTPUT        4 00000064 00000001     F  F                59   35    45
SAVEAREA      4 000000C4 00000001     F  F                98   12
 
                                  Unreferenced Symbols Defined in CSECTs                                       Page    7
  Defn  Symbol                                                                              HLASM R6.0  2012/11/12 09.07
     2  WRITE
 
                                          Macro and Copy Code Source Summary                                   Page    8
 Con Source                                        Volume    Members                        HLASM R6.0  2012/11/12 09.07
  L1 SYS1.MACLIB                                   VTMVSC    CLOSE    DCB      IHBERMAC IHBINNRA IHB01    OPEN     PUT
                                                             RETURN   SAVE     SYSSTATE
 
                                                      Using Map                                                Page    9
                                                                                            HLASM R6.0  2012/11/12 09.07
  Stmt  -----Location----- Action ----------------Using----------------- Reg Max     Last Label and Using Text
          Count      Id           Type          Value    Range     Id        Disp    Stmt
     4  00000000  00000001 USING  ORDINARY    00000000 00001000 00000001   2 0010D     43 *,2
 
                                   General Purpose Register Cross Reference                                    Page   10
 Register  References (M=modified, B=branch, U=USING, D=DROP, N=index)                      HLASM R6.0  2012/11/12 09.07
    0(0)      10    17M   22M   36M   50M
    1(1)      10    16    17    18M   18    19M   22M   26M   35M   38    43M   50M
    2(2)       4U   10    11M   16M   50M
    3(3)    (no references identified)
    4(4)    (no references identified)
    5(5)    (no references identified)
    6(6)    (no references identified)
    7(7)    (no references identified)
    8(8)    (no references identified)
    9(9)    (no references identified)
   10(A)    (no references identified)
   11(B)    (no references identified)
   12(C)    (no references identified)
   13(D)      10    13    14    15M   47M   47    50    51
   14(E)      10    21M   22M   39M   50M   52B
   15(F)       7    10    11    12M   13    14    15    20M   22M   37M   37    38M   39B   50M
 
                                  Diagnostic Cross Reference and Assembler Summary                             Page   11
                                                                                            HLASM R6.0  2012/11/12 09.07
Statements Flagged
    28(L1:IHBERMAC,325)
 
      1 Statement  Flagged in this Assembly       12 was Highest Severity Code
HIGH LEVEL ASSEMBLER, 5696-234, RELEASE 6.0, PTF UK82155
SYSTEM: z/OS 01.13.00              JOBNAME: C432110A    STEPNAME: CLG        PROCSTEP: C
Data Sets Allocated for this Assembly
 Con DDname   Data Set Name                                Volume  Member
  P1 SYSIN    C432110.ASM                                  VPWRKB  LAB08
  L1 SYSLIB   SYS1.MACLIB                                  VTMVSC
  L2          C432110.MACLIB                               VPWRKB
  L3          SYS1.AMODGEN                                 VDMVSB
     SYSLIN   SYS12317.T090724.RA000.C432110A.OBJ.H01
     SYSPRINT C432110.C432110A.JOB07825.D0000101.?
 
  32104K allocated to Buffer Pool       Storage required     528K
     36 Primary Input Records Read         4190 Library Records Read                  0 Work File Reads
      0 ASMAOPT Records Read                224 Primary Print Records Written         0 Work File Writes
      7 Object Records Written                0 ADATA Records Written
Assembly Start Time: 09.07.25 Stop Time: 09.07.25 Processor Time: 00.00.00.0094
Return Code 012


I'm not sure I understand what happened - could you explain what's going on? (Not looking for code snippets)
RISCCISCInstSet
User avatar
RISCCISCInstSet
 
Posts: 121
Joined: Mon Oct 17, 2011 1:46 pm
Has thanked: 146 times
Been thanked: 0 time

Re: Abending Subroutine

Postby steve-myers » Tue Nov 13, 2012 1:23 am

Find the error message in your output. It appears to be related to

OPEN (OUTPUT,SYSPRINT)

Now, find the definition of the OPEN macro in DFSMS Macro Instructions for Data Sets for your z/OS release. When you find it, read it carefully, and I'm certain you will discover your problem.

You have probably introduced two problems in your changes to my little WRITE subroutine.
  • The length of the message area should exactly match the LRECL in the DCB. You changed the LRECL, but not the message area.
  • I noticed you changed the data initialization values when you changed my DC instructions to DS instructions. The WRITE routine assumes the message area is initialized to blanks, which is no longer true after your changes.
A comment about program style. In my programming style I assume all data in the program text is set to something. For this reason I always use the DC instruction to initialize data areas. This really does not matter very much for the new save area. but it does matter for the message area. One little noticed change between the old Linkage Editor and the Binder is the Binder claims DS areas in a program will be set to binary 0s. This was not true with the Linkage Editor; this data could be set to a random value, and programmers have gotten program errors because the data was unpredictable.

These users thanked the author steve-myers for the post:
RISCCISCInstSet (Tue Nov 13, 2012 1:46 am)
steve-myers
Global moderator
 
Posts: 2105
Joined: Thu Jun 03, 2010 6:21 pm
Has thanked: 4 times
Been thanked: 243 times

Re: Abending Subroutine

Postby RISCCISCInstSet » Tue Nov 13, 2012 4:02 am

Thanks for your help. I seem to be making sense of this and just need to make a little fine tuning to meet the requested specs. :D
RISCCISCInstSet
User avatar
RISCCISCInstSet
 
Posts: 121
Joined: Mon Oct 17, 2011 1:46 pm
Has thanked: 146 times
Been thanked: 0 time


Return to Assembler

 


  • Related topics
    Replies
    Views
    Last post