//JOBNAME JOB (ACCT),NAME,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) //********************************************************************* //ASMCLG PROC N=TEMPNAME,AOPT=,APARM=,LOPT=, // MAC1='SYS1.MACLIB', // MAC2='SYS1.MACLIB', // MAC3='SYS1.MODGEN', // LLIB='MY.APFLOAD' <== Your APF Load module library //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) //LKD EXEC PGM=IEWL,COND=(5,LT,ASM), // PARM=('LIST,LET,MAP,XREF,&LOPT') //SYSPRINT DD SYSOUT=* //SYSLIN DD DSN=*.ASM.SYSLIN,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DISP=SHR,DSN=&LLIB(&N) //GO EXEC PGM=*.LKD.SYSLMOD,COND=(5,LT,ASM), // PARM=('') //STEPLIB DD DISP=SHR,DSN=&LLIB //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* // PEND //********************************************************************* //STEP1 EXEC ASMCLG,LOPT='AC=1' //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.2 * * ===================================================== * * DEVICE SEARCH(BUILD CONNECTED DEVICE LIST). * * ===================================================== * * THIS PROGRAM MUST BE SAVED IN APF LIBRARY WITH AC=1. * * >> SETPROG APF,ADD,DSN=dsname,VOL=volser << * *********************************************************************** MAINPROC DS 0H OPEN (SYSPRINT,OUTPUT) OPEN SYSPRINT DATASET PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLINE2 PRINT TITLE LINE-2 MODESET MODE=SUP CHANGE US TO SUP STATE SPACE , USING SCHIB,SCIBAREA ADDRESS TO SUBCHANNEL INFO BLK. L R2,=A(X'00010000') GR2 --> SUBCHANNEL NUMBER DOSCHST DS 0H LR R1,R2 LOAD SUBCHANNEL NUMBER INTO GR1 STSCH SCHIB STORE SUBCHANNEL INFO BLOCK. BNZ DONE ALL DEVICE DONE... SPACE , LR R0,R2 LOAD SUBCHANNEL NUMBER LA R1,DOUBLE SET WORKAREA ADDRESS BAS RE,CNVRTX CONVERT GR0 TO HEX-DECIMAL MVC SCH#,DOUBLE+4 MOVE INTO PRINT LINE SPACE , ICM R0,B'0011',SCHFLG1 LOAD FLAGS LA R1,DOUBLE SET WORKAREA ADDRESS BAS RE,CNVRTX CONVERT GR0 TO HEX-DECIMAL MVC FLGS,DOUBLE+4 MOVE INTO PRINT LINE SPACE , ICM R0,B'0011',SCHDEVNO LOAD DEVICE NUMBER LA R1,DOUBLE SET WORKAREA ADDRESS BAS RE,CNVRTX CONVERT GR0 TO HEX-DECIMAL MVC DEVN,DOUBLE+4 MOVE INTO PRINT LINE SPACE , L R0,SCHCHPID+0 LOAD CHANNEL PATH ID 0-3 LA R1,CHPID+0 SET OUTPUT AREA ADDRESS BAS RE,CNVRTX CONVERT GR0 TO HEX-DECIMAL L R0,SCHCHPID+4 LOAD CHANNEL PATH ID 4-7 LA R1,CHPID+8 SET OUTPUT AREA ADDRESS BAS RE,CNVRTX CONVERT GR0 TO HEX-DECIMAL SPACE , L R0,SCHIP LOAD UCB ADDRESS(UNDER MVS) LA R1,UCB SET OUTPUT AREA ADDRESS BAS RE,CNVRTX CONVERT GR0 TO HEX-DECIMAL SPACE , MVI REMARK,C' ' CLEAR REMARK FIELD MVC REMARK+1(L'REMARK-1),REMARK ICM R0,B'1111',SCHIP UCB AVAILABLE ? BNZ *+4+6 YES, ITS HCD DEFINED DEVICE MVC REMARK,=CL20'UNDEFINED DEVICE !!' NO, UNDEFINED DEV. SPACE , PUT SYSPRINT,OUTLINE1 PRINT DEVICE DATA LINE AH R2,=H'1' INCREMENT SUBCHANNEL NUMBER B DOSCHST LOOP UNTIL END OF DEVICE SPACE , DONE DS 0H MODESET MODE=PROB BACK US TO SAFE STATE 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 DS 0F SCIBAREA DC (SCHIBEND-SCHIB)X'00' SUBCHANNEL INFORMATION BLOCK SPACE , * 0----+----1----+----2----+----3----+----4----+---- TITLINE1 DC CL120'SCH# FLGS DEVN CHPID UCB' TITLINE2 DC CL120'==================================================+ ==========' OUTLINE1 DC CL120'@@@@ @@@@ @@@@ @@@@@@@@@@@@@@@@ @@@@@@@@ UNDEFINED+ DEVICE !!' SCH# EQU OUTLINE1+0,4 FLGS EQU OUTLINE1+5,4 DEVN EQU OUTLINE1+10,4 CHPID EQU OUTLINE1+15,16 UCB EQU OUTLINE1+32,8 REMARK EQU OUTLINE1+41,20 SPACE , SYSPRINT DCB DDNAME=SYSPRINT, DCB FOR SYSPRINT DATASET + DSORG=PS,MACRF=PM,RECFM=FB,BLKSIZE=0,LRECL=120 *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* IHASCHIB , SUBCHANNEL INFORMATION BLOCK *---------------------------------------------------------------------* * 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 // //