//JOBNAME JOB (ACCT),NAME,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) //********************************************************************* //ASMCG PROC AOPT=,APARM=,LOPT=, // MAC1='SYS1.MACLIB', // MAC2='SYS1.MACLIB', // MAC3='SYS1.MODGEN' //ASM EXEC PGM=ASMA90, // PARM=('OBJ,NODECK,LC(32767),XREF(SHORT),TERM,RLD,ASA,&AOPT', // 'US(MAP,WARN(11)),SYSPARM(&APARM)') //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //SYSLIB DD DISP=SHR,DSN=&MAC1 // DD DISP=SHR,DSN=&MAC2 // DD DISP=SHR,DSN=&MAC3 //SYSUT1 DD UNIT=SYSALLDA,SPACE=(TRK,(80,20)) //SYSLIN DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(TRK,(30,15),RLSE), // DCB=(RECFM=FB,BLKSIZE=0,LRECL=80) //GO EXEC PGM=LOADER,COND=(5,LT,ASM), // PARM=('LIST,LET,MAP,XREF,&LOPT') //SYSLOUT DD DUMMY //SYSLIN DD DSN=*.ASM.SYSLIN,DISP=(OLD,DELETE) //SYSPRINT DD SYSOUT=* // PEND //********************************************************************* //STEP1 EXEC ASMCG //ASM.SYSIN DD * *=====================================================================* * MVS STANDARD HOUSE KEEPING PROCEDURE * *=====================================================================* * *----------------------------------* * * ENTRY PROCESSING * * *----------------------------------* MYASMPGM CSECT , DEFINE CONTROL SECTION MYASMPGM AMODE 31 DEFINE DEFAULT AMODE=31 MYASMPGM RMODE 24 DEFINE DEFAULT RMODE=24 USING *,12 DEFINE BASE REGISTER SAVE (14,12),,* SAVE CALLER REGISTERS LA 12,0(,15) GR12 --> OUR 1ST BASE ADDRESS LR 15,13 SAVE CALLER SAVEAREA CNOP 0,4 INSURE FULL WORD BOUNDARY BAS 13,*+4+72 AROUND OUR SAVEAREA DC 18F'-1' OUR GPR SAVEAREA ST 15,4(,13) SAVE CALLER SAVEAREA POINTER ST 13,8(,15) SET BACK CHAIN FOR LINK TRACE B MAINPROC DO MAINLINE PROCESSING * *----------------------------------* * * EXIT PROCESSING * * *----------------------------------* EXITPROC DS 0H L 13,4(,13) RESTORE CALLER SAVEAREA ST 15,16(,13) PASS RETURN CODE TO CALLER RETURN (14,12),T RESTORE CALLER REGISTERS + AND RETURN TO CALLER EJECT , *********************************************************************** * MAIN LINE PROCESSING. * * ===================================================== * * GR1 -- EXEC PARAMETER PLIST * * GR12 - BASE REGISTER * * GR13 - OUR REGISTER SAVEAREA * *---------------------------------------------------------------------* * SAMPLE CODE OF 'MVS ADVANCED SKILL Vol-1' CHAPTER 5.6 * * ===================================================== * * SUBSYSTEM LOOK-UP(BUILD SUBSYSTEM LIST). * * SIMULATE 'D SSI' COMMAND. * *********************************************************************** MAINPROC DS 0H OPEN (SYSPRINT,OUTPUT) OPEN SYSPRINT DATASET PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLINE2 PRINT TITLE LINE-2 SPACE , * *----------------------------------* * * LOOK-UP BY SSCT CHAIN * * * ============================== * * *----------------------------------* L R6,CVTPTR LOAD CVT L R6,CVTJESCT-CVT(,R6) LOAD JESCT LA R6,JESSSCT-JESCT(,R6) LOCATE TO 1ST SSCT POINTER SH R6,=Y(SSCTSCTA-SSCT) ADJUST FOR CHAIN LOOP USING SSCT,R6 ADDRESS TO SSCT SSCTLOOP DS 0H ICM R6,B'1111',SSCTSCTA CHAINED NEXT SSCT ENTRY ? BZ SSCTDONE IF ZERO, ALL SSCT DONE... SPACE , MVC OUTLINE1,BLANKS INIT OUTPUT LINE AREA MVC SSNAME,SSCTSNAM SET SUBSYSTEM NAME LA R0,SSCT EDIT SSCT ADDRESS LA R1,SSCTADDR I BAS RE,CNVRTX V L R0,SSCTSUSE EDIT SUSE CONTENT LA R1,SUSECONT I BAS RE,CNVRTX V L R0,SSCTSUS2 EDIT SUS2 CONTENT LA R1,SUS2CONT I BAS RE,CNVRTX V L R0,SSCTSSVT EDIT SSCT ADDRESS LA R1,SSVTADDR I BAS RE,CNVRTX V SPACE , * *----------------------------------* * * LIST SUPPORTED FUNCTION FROM * * * SSVT FUNCTION MATRIX TABLE * * *----------------------------------* L R7,SSCTSSVT LOAD SSVT LTR R7,R7 VALID SSVT ? BZ PRNOSSVT NO, LA R7,SSVTFCOD-SSVT(,R7) LOCATE TO FUNCTION MATRIX TABLE LA R8,FUNCTION LOCATE TO FUNCTION NUMBER FIELD LA R4,256 LOAD NUM OF MAXIMUM FUNCTIONS LA R5,1 SET BEGIN FUNCTION NUMBER LH RA,=Y(#FUNC) LOAD MAXIMUM FUNCTIONS PER LINE SSVTLOOP DS 0H LTR R4,R4 END OF TABLE ? BNZ SSVTFCHK NO, CONTINUE CLI FUNCTION,C' ' ANY FUNCTION ON CURRENT LINE ? BNE PRNOSSVT YES, PRINT IT B SSCTLOOP DONE FOR THIS SSVT SSVTFCHK DS 0H CLI 0(R7),0 SUPPORTED FUNCTION BYTE ? BE SSVTNOFC NO, CVD R5,DOUBLE CONVERT TO ZONED DECIMAL OI DOUBLE+7,X'0F' I UNPK 0(3,R8),DOUBLE V LA R8,4(,R8) LOCATE TO NEXT MARKER FIELD BCTR RA,0 CORRECT REMAIN FIELDS/LINE SSVTNOFC DS 0H LA R7,1(,R7) LOCATE TO NEXT FUNCTION BYTE LA R5,1(,R5) INCREMTN FUNCTION NUMBER BCTR R4,0 CORRECT REMAINING TABLE BYTES LTR RA,RA FILLED LINE ? BNZ SSVTLOOP NO, PUT SYSPRINT,OUTLINE1 PRINT SSCT ENTRY LINE MVC OUTLINE1,BLANKS INIT OUTPUT LINE AREA LA R8,FUNCTION LOCATE TO FUNCTION NUMBER FIELD LH RA,=Y(#FUNC) LOAD MAXIMUM FUNCTIONS PER LINE B SSVTLOOP LOOP FOR NEXT FUNCTION BYTE SPACE , PRNOSSVT DS 0H PUT SYSPRINT,OUTLINE1 PRINT SSCT ENTRY LINE B SSCTLOOP LOOP UNTIL END OF SSCT SSCTDONE DS 0H DROP R6 FORGET SSCT SPACE , PUT SYSPRINT,BLANKS PRINT BLANK LINE PUT SYSPRINT,TITLINE3 PRINT TITLE LINE-3 PUT SYSPRINT,TITLINE2 PRINT TITLE LINE-2 SPACE , * *----------------------------------* * * LOOK-UP BY IEFSSI MACRO * * * ============================== * * *----------------------------------* IEFSSI REQUEST=QUERY, BUILD SUBSYSTEM LIST TABLE + SUBNAME=ALLSUBS, + WORKAREA=AWKAREA L R6,AWKAREA LOAD OUTPUT AREA ADDRESS USING JQRY_HEADER,R6 ADDRESS TO HEADER L R7,JQRY_NUM_SUBSYS LOAD NUM OF SUBSYSTEM ENTRIES LA R6,JQRY_SUBSYS_DATA LOCATE TO 1ST SUBSYSTEM ENTRY USING JQRY_SUBSYS_ENTRY,R6 ADDRESS TO SUBSYSTEM ENTRY SSITLOOP DS 0H MVC OUTLINE2,BLANKS INIT OUTPUT LINE AREA MVC SSNAME2,JQRY_SUBSYS_NAME SET SUBSYSTEM NAME TM JQRY_STATUS1,JQRY_PRIMARY1 PRIMARY SUBSYSTEM ? BNO *+4+6 NO, MVC SSPRIM,=CL7'PRIMARY' YES, INDICATE IT TM JQRY_STATUS1,JQRY_DYNAMIC1 DYNAMIC SUBSYSTEM ? BNO *+4+6 NO, MVC SSDYNAM,=CL7'DYNAMIC' YES, INDICATE IT TM JQRY_STATUS1,JQRY_DYNSSI_COMMANDS1 ACCEPT SSI COMMAND ? BNO *+4+6 NO, MVC SSSSICMD,=CL5'ALLOW' YES, INDICATE IT SPACE , LA R6,JQRY_VT_LIST LOCATE TO VECTOR TABLE ENTRY USING JQRY_VT_ENTRY,R6 ADDRESS TO SUBSYSTEM SSVT ENTRY TM JQRY_VT_FLAGS,JQRY_VT_ACTIVE SSVT CREATED BY IEFSSI ? BNO *+4+6 NO, MVC SSSSVMAN,=CL11'SSI-MANAGED' YES, INDICATE IT TM JQRY_VT_FLAGS,JQRY_VT_ACTIVE SSVT ACTIVE ? BNO SSITPRNT NO, MVC SSSSVACT,=CL6'ACTIVE' YES, INDICATE IT SPACE , LA RE,JQRY_VT_FUNC_LIST LOCATE TO FUNCTION LIST FIELD LA RF,8 GETS NUM OF SUPPORTED FUNCTIONS SLR R2,R2 I CALCFNUM DS 0H I L R1,0(,RE) I LA RA,32 I SLR R0,R0 I SLDL R0,1 I AR R2,R0 I BCT RA,*-2-4-2 I LA RE,4(,RE) I BCT RF,CALCFNUM V CVD R2,DOUBLE CONVERT TO ZONED DECIMAL OI DOUBLE+7,X'0F' I UNPK SSSSVFC#,DOUBLE V SPACE , SSITPRNT DS 0H PUT SYSPRINT,OUTLINE2 PRINT SUBSYSTEM ENTRY LINE LA R6,JQRY_VT_END LOCATE TO NEXT ENTRY LA R6,JQRY_VT_END SKIP NULL ENTRY BCT R7,SSITLOOP LOOP UNTIL END OF TABLE SPACE , L R1,AWKAREA LOAD OUTPUT AREA ADDRESS L R0,JQRYLEN-JQRY_HEADER(,R1) LOAD OUTPUT AREA LENGTH FREEMAIN RU,LV=(0),A=(1) FREEMAIN WORKAREA OBTAINED + BY IEFSSI SERVICE SPACE , CLOSE (SYSPRINT) CLOSE SYSPRINT DATASET SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* SLR 15,15 LOAD RETURN CODE = 0 B EXITPROC DO EXIT PROCESSING EJECT , *********************************************************************** * I N T E R N A L S U B R O U T I N E S * *********************************************************************** *---------------------------------------------------------------------* * CNVRTX - CONVERT BINARY TO HEX-DECIMAL TEXT (REGISTER TYPE) * * CALL INTERFACE - * * GR0: FULL-WORD BINARY VALUE * * GR1: 8BYTES OUTPUT-AREA ADDRESS * * BAS 14,CNVRTX * *---------------------------------------------------------------------* CNVRTX DS 0H CONVERT GR0 TO HEX-DECIMAL LA 1,7(,1) LA 15,8 STC 0,0(,1) NI 0(1),X'0F' TR 0(1,1),CNVTRT2 SRL 0,4 BCTR 1,0 BCT 15,*-2-4-6-4-4 BR 14 CNVTRT2 DC CL16'0123456789ABCDEF' TRANS TABLE FOR HEX-CHARACTER *---------------------------------------------------------------------* EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA AWKAREA DC A(0) POINTER TO IEFSSI BUILT AREA ALLSUBS DC CL4'*' INDICATES ALL SUBSYSTEM NAME SPACE , * 0----+----1----+----2----+----3----+----4----+---- TITLINE1 DC CL120'NAME SSCT SUSE SUS2 SSVT FUNCTION(+ BROADCAST)' TITLINE2 DC CL120'==================================================+ ========================================================+ ==============' TITLINE3 DC CL120'NAME SUBSYSTEM STATUS SETSSI-ACT/DEACT FUNCTION+ S STATUS #FUNCS' OUTLINE1 DC CL120'@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@ @@@ @+ @@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @+ @@ @@@ @@@ @@@' SSNAME EQU OUTLINE1+0,4 SSCTADDR EQU OUTLINE1+5,8 SUSECONT EQU OUTLINE1+14,8 SUS2CONT EQU OUTLINE1+23,8 SSVTADDR EQU OUTLINE1+32,8 FUNCTION EQU OUTLINE1+41,3 #FUNC EQU 20 OUTLINE2 DC CL120'@@@@ @@@@@@@ @@@@@@@ @@@@@ @@@@@@ @+ @@@@@@@@@@ @@@' SSNAME2 EQU OUTLINE2+0,4 SSPRIM EQU OUTLINE2+6,7 SSDYNAM EQU OUTLINE2+14,7 SSSSICMD EQU OUTLINE2+24,5 SSSSVACT EQU OUTLINE2+42,6 SSSSVMAN EQU OUTLINE2+49,11 SSSSVFC# EQU OUTLINE2+63,3 BLANKS DC CL120' ' BLANK DATA SPACE , SYSPRINT DCB DDNAME=SYSPRINT, DCB FOR SYSPRINT DATASET + DSORG=PS,MACRF=PM,RECFM=FB,BLKSIZE=0,LRECL=120 SPACE , *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* CVT DSECT=YES,LIST=YES CVT IEFJESCT JESCT IEFJSCVT SSCT IEFJSSVT SSVT IEFJSQRY IEFSSI WORKAREA MAP IEFJSRC Dynamic SSI Return and Reason Codes *---------------------------------------------------------------------* * S/370, ESA/390 REGISTER EQUATES * *---------------------------------------------------------------------* YREGS , OS: REGISTER EQUATES RA EQU 10 ADD EQUATION FOR GR10 RB EQU 11 ADD EQUATION FOR GR11 RC EQU 12 ADD EQUATION FOR GR12 RD EQU 13 ADD EQUATION FOR GR13 RE EQU 14 ADD EQUATION FOR GR14 RF EQU 15 ADD EQUATION FOR GR15 END // //