JCL:

//ADCDCHK
Here's mine running on z/OS 1.10 and above....

JCL:


//ADCDCHK  JOB SYSTEMS,MSGLEVEL=(1,1),MSGCLASS=X,CLASS=A,PRTY=8,
//     NOTIFY=&SYSUID,REGION=4096K
//AL     PROC LMOD='SFORD.LINKLIB',
//       LMEM=MISSINGMEMBERNAME,
//       REG=4096K,LNKPARM='LIST,XREF,TEST'
//ASM    EXEC  PGM=ASMA90,REGION=&REG,PARM=(OBJECT,LIST)
//SYSLIB   DD  DISP=SHR,DSN=SYS1.MACLIB
//         DD  DISP=SHR,DSN=SYS1.MODGEN
//         DD  DISP=SHR,DSN=SYS1.AMODGEN
//         DD  DISP=SHR,DSN=TCPIP.SEZACMAC
//         DD  DISP=SHR,DSN=CAI.CAIMAC
//SYSUT1   DD  UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSUT2   DD  UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSUT3   DD  UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSLIN   DD  DISP=(NEW,PASS),DSN=&&LOADSET,UNIT=SYSDA,
//             SPACE=(3120,(100,10))
//SYSPRINT DD  SYSOUT=*
//LNK       EXEC PGM=IEWL,COND=(4,LT,ASM),PARM='&LNKPARM',REGION=&REG
//SYSLIB    DD DISP=SHR,DSN=CEE.SCEELKED
//          DD DISP=SHR,DSN=SYS1.CSSLIB
//          DD DISP=SHR,DSN=&LMOD
//SYSLMOD   DD DISP=SHR,DSN=&LMOD(&LMEM)
//SYSUT1    DD UNIT=SYSDA,DCB=BLKSIZE=1024,SPACE=(1024,(200,20))
//SYSPRINT  DD SYSOUT=*
//SYSLOUT   DD SYSOUT=*
//SYSLIN    DD DISP=(OLD,DELETE),DSN=&&LOADSET
//          DD DDNAME=SYSIN
//          PEND
//DOIT      EXEC AL,LMEM=CARDPRT
//ASM.SYSIN    DD  DSN=SFORD.ASSEMBLE.SOURCE(CARDPRT),DISP=SHR

Source:

CARDPRT  CSECT
CARDPRT  AMODE 24
CARDPRT  RMODE 24
         YREGS
         USING CARDPRT,R12
         STM   14,12,12(R13)
         LR    R12,R15
         ST    R13,SAVEAREA+4
         LA    R10,SAVEAREA
         ST    R10,8(R13)
         LR    R13,R10
         XR    R5,R5
         XR    R4,R4
         OPEN  (PRTOUT,OUTPUT)
         OPEN  (CARDIN,INPUT)
READREC  DS    0H
         GET   CARDIN,INAREA
         MVI   OUTAREA,C' '
         MVC   OUTAREA+1(132),OUTAREA
         MVC   NAMEOUT,NAMEIN
         MVC   ADDROUT,ADDRIN
         MVC   ADDR2OUT,ADDR2IN
         PUT   PRTOUT,OUTAREA
         AP    RECS,=P'1'
         B     READREC
EXIT     DS    0H
         CLOSE CARDIN
         MVC   OUTAREA,C' '
         MVC   OUTAREA+1(132),OUTAREA
         MVC   OUTAREA+2(14),=CL14'RECORDS READ: '
         MVC   OUTAREA+17(4),=X'40202120'
         ED    OUTAREA+17(4),RECS
         PUT   PRTOUT,OUTAREA
         CLOSE PRTOUT
         L     R13,SAVEAREA+4
         L     R14,12(R13)
         LM    R0,R12,20(R13)
         XR    R15,R15
         BR    R14
         LTORG
SAVEAREA DS    18F
CARDIN   DCB   DSORG=PS,LRECL=80,DDNAME=CARDIN,EODAD=EXIT,             X
               MACRF=GM
INAREA   DS    0CL80
NAMEIN   DS    CL20
ADDRIN   DS    CL30
ADDR2IN  DS    CL30
PRTOUT   DCB   DSORG=PS,DDNAME=PRTOUT,                                 X
               MACRF=PM,LRECL=133,BLKSIZE=133,RECFM=FB
OUTAREA  DS    0CL133
NAMEOUT  DS    CL20
ADDROUT  DS    CL30
ADDR2OUT DS    CL30
         DS    CL53
RECS     DC    PL2'0'
END   CARDPRT

Regards,
 
Scott J Ford
 www.identityforge.com




________________________________
From: "Veilleux, Jon L" <veilleu...@aetna.com>
To: IBM-MAIN@bama.ua.edu
Sent: Tue, May 10, 2011 1:24:33 PM
Subject: Re: S0C4-04 Assembler

The original post linked the module as reentrant. If it must be reentrant then 
your example would need to get storage for the save area. If it doesn't need to 
be reentrant then that is not an issue.

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of 
Dan Skomsky, PSTI
Sent: Tuesday, May 10, 2011 12:59 PM
To: IBM-MAIN@bama.ua.edu
Subject: Re: S0C4-04 Assembler

Why are we over complicating a simple WTO test program?  Yes, we all know there 
are some Assembler Guru's on board.  But damn, just keep it simple.
Why complicate matters with reentrant code and adding DSECTS?  Let's just 
correct the original problem.  With that said, this should make a simple 
program 
work and not require going back to refer to the latest POPS and Supervisor 
Services manuals (comments added for clarity):

//PROGRAMA JOB  MSGCLASS=X,MSGLEVEL=(1,1),REGION=0M,NOTIFY=&SYSUID
//ASM      EXEC PGM=ASMA90                                        
//SYSPRINT DD  SYSOUT=*                                          
//SYSTERM  DD  SYSOUT=*                                          
//SYSLIB  DD  DSN=SYS1.MACLIB,DISP=SHR                          
//SYSUT1  DD  UNIT=SYSDA,SPACE=(CYL,(3,1))                      
//SYSLIN  DD DSN=&&OBJ,UNIT=SYSDA,                              
//            SPACE=(CYL,(1,1)),DISP=(,PASS)                      
//SYSIN    DD  *                                                  
ASSHELLO CSECT
        USING *,R15          R15 ALREADY SET FROM CALLER
        STM  R14,R12,12(R13) SAVE ALL REGISTERS
        CNOP  0,4            GET ON FULLWORD BOUNDARY
        BAL  R14,*+4+72      HOP OVER NEW SAVE AREA AND SET PTR
MYSAVE  DC    18F'-1'        OUR NEW SAVE AREA SET TO ALL X'FF'

****    BALR  12,0            PREPARE A BASE REGISTER            
****    USING *,12            ESTABLISH BASE REGISTER
        ST    R14,8(R13)      CHAIN OLD SAVE AREA TO NEW SAVE AREA
        ST    R13,4(R14)      CHAIN NEW SAVE AREA TO OLD SAVE AREA
        LR    R13,R14        POINT R13 TO NEW SAVE AREA
        USING MYSAVE,R13      SET IT AS PROGRAM BASE ALSO
        DROP  R15            AND FINALLY DROP ORIGINAL BASE
*                                                                
*        WTO  'TEST'              THIS WORKED

        OPEN  (SALIDA,(OUTPUT))                                  
        PUT  SALIDA,HELLOMSG                                    
        CLOSE (SALIDA)
        L    R13,4(R13)      GET POINTER TO OLD SAVE AREA
        LM    R14,R12,12(R13) RESTORE ALL REGISTERS
        MVI  12(R13),X'FF'  MARK OLD SAVE AREA AS INACTIVE

*                                                                
*        LA    R15,0        * SET RETURN-CODE TO ZERO            
        SR    R15,R15        USE A 2 BYTE INSTRUCTION NOT 4 BYTE
        BR    14            * RETURN TO CALLER                        
R0      EQU  0                                                        
R1      EQU  1                                                        
R2      EQU  2                                                        
R3      EQU  3                                                        
R4      EQU  4                                                        
R5      EQU  5                                                        
R6      EQU  6                                                        
R7      EQU  7                                                        
R8      EQU  8                                                        
R9      EQU  9                                                        
R10      EQU  10                                                      
R11      EQU  11                                                      
R12      EQU  12                                                      
R13      EQU  13                                                      
R14      EQU  14                                                      
R15      EQU  15                                                      
HELLOMSG DC    CL80'I AM AN OLD FREAK'  <= SET STRING LENGTH TO LRECL

SALIDA  DCB  DSORG=PS,MACRF=PM,DDNAME=SALIDA,                        X
              RECFM=FB,LRECL=80,BLKSIZE=80
        LTORG ,              <= JUST TO BE KOSHER

        END                                    

I apologies to those who may be offended.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at 
http://bama.ua.edu/archives/ibm-main.html
This e-mail may contain confidential or privileged information. If
you think you have received this e-mail in error, please advise the
sender by reply e-mail and then delete this e-mail immediately.
Thank you. Aetna  

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to