//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=* //SYSUDUMP 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.1 * * ===================================================== * * SHOW MVS SYSTEM INFORMATIONS. * *********************************************************************** MAINPROC DS 0H OPEN (SYSPRINT,OUTPUT) OPEN SYSPRINT DATASET PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLINE2 PRINT TITLE LINE-2 SPACE , L R3,CVTPTR GR3 --> CVT USING CVTMAP,R3 ADDRESS IT MVC SYSNAME,CVTSNAME SET SYSTEM NAME L R0,CVTRLSTG LOAD REAL STORAGE SIZE SRL R0,10 CONVERT TO MEGA-BYTES CVD R0,DOUBLE UNPK STORAGE,DOUBLE OI STORAGE+4,C'0' SET IT L R2,CVTEXT2 LOAD CVT EXTENSION USING CVTXTNT2,R2 ADDRESS IT MVC NUCID,CVTNUCLS SET NUCLEUS SUFFIX MVC IODFID,CVTIOCID SET IODF SUFFIX DROP R2 FORGET CVT EXTENSION SPACE , LR R2,R3 COPY CVT ADDRESS SH R2,=Y(CVTMAP-CVTFIX) LOCATE TO CVT PREFIX MVC SPLEVEL,CVTPRODN-CVTFIX(R2) SET MVS SP LEVEL MVC FMID,CVTPRODI-CVTFIX(R2) SET MVS FMIDL SPACE , L R2,CVTSMCA LOAD SMCA USING SMCABASE,R2 ADDRESS IT MVC SYSID,SMCASID SET SMF SYSTEM-ID XC DOUBLE,DOUBLE CLEAR WORKAREA MVC DOUBLE+4,SMCAIDTE SET IPL DATE(0CYYDDDF) MVI DOUBLE+4,X'20' MAKE IT 20XXDDDF UNPK HWNAME(7),DOUBLE CONVERT TO ZONE MVC IPLDATE(4),HWNAME SET YEAR MVC IPLDATE+5(3),HWNAME+4 SET DAY SLR R0,R0 L R1,SMCAITME LOAD IPL TIME(1/100SEC FROM D R0,=F'360000' GET HOUR MIDNIGHT) CVD R1,DOUBLE CONVERT IT TO PACKED DECIMAL L R1,DOUBLE+4 LOAD IT SRL R1,4 DROP SIGN BITS STC R1,HWNAME SAVE IT FOR LATER SRDL R0,32 COPY GR0 TO GR1 AND CLEAR GR0 D R0,=F'6000' GET MINUTE CVD R1,DOUBLE CONVERT IT TO PACKED DECIMAL L R1,DOUBLE+4 LOAD IT SRL R1,4 DROP SIGN BITS STC R1,HWNAME+1 SAVE IT FOR LATER SRDL R0,32 COPY GR0 TO GR1 AND CLEAR GR0 D R0,=F'100' GET SECOND CVD R1,DOUBLE CONVERT IT TO PACKED DECIMAL L R1,DOUBLE+4 LOAD IT SRL R1,4 DROP SIGN BITS STC R1,HWNAME+2 SAVE IT FOR LATER ICM R0,B'0111',HWNAME LOAD HHMMSS SLL R0,4 MAKE SIGN PLACE O R0,=A(X'0000000F') LOAD SIGN BITS ST R0,DOUBLE+4 UNPK HWNAME(6),DOUBLE CONVERT TO ZONE MVC IPLTIME+0(2),HWNAME SET HOUR MVC IPLTIME+3(2),HWNAME+2 SET MINUTE MVC IPLTIME+6(2),HWNAME+4 SET SECOND DROP R2 FORGET SMCA SPACE , L R2,CVTECVT LOAD ECVT USING ECVT,R2 ADDRESS IT MVC HWNAME,ECVTHDNM SET HARDWARE NAME MVC LPNAME,ECVTLPNM SET LPAR NAME MVC VMUID,ECVTVMNM SET VM USERID MVC PXNAME,ECVTSPLX SET SYSPLEX NAME MVC LPPARM1,ECVTLOAD SET ENTERED LOADPARM MVC LPPARM2,ECVTMLPR SET MDIFIED LOADPARM MVC OSNAME,ECVTPNAM SET OS NAME MVC OSVERS+0(2),ECVTPVER SET OS VERSION LEVEL MVC OSVERS+3(2),ECVTPREL SET OS RELEASE LEVEL MVC OSVERS+6(2),ECVTPMOD SET OS MODIFY LEVEL MVC OSPID,ECVTPIDN SET OS PID MVC OSOWNER,ECVTPOWN SET OS OWNER DROP R2 FORGET ECVT SPACE , L R2,PSAPCCAV-PSA(0,0) LOAD CURRENT CPU PCCA USING PCCA,R2 ADDRESS IT MVC CPUMODEL,PCCACPID+8 SET CPU MODEL MVC SERIAL,PCCACPID+3 SET CPU SERIAL DROP R2 FORGET PCCA SPACE , L R1,CVTCSD LOAD CSD USING CSD,R2 ADDRESS IT LH R0,CSDCPUOL-CSD(,R1) LOAD ONLINE CPU# CVD R0,DOUBLE UNPK CPU#,DOUBLE OI CPU#+1,C'0' SET NUM OF ACTIVE CPUS IC R0,CSDPLPN-CSD(,R1) LOAD PR/SM LPAR# CVD R0,DOUBLE UNPK LPAR#,DOUBLE OI LPAR#+1,C'0' SET PR/SM LPAR NUMBER DROP R2 FORGET CSD SPACE , PUT SYSPRINT,OUTLINE1 PRINT DATA LINE-1 PUT SYSPRINT,OUTLINE2 PRINT DATA LINE-2 PUT SYSPRINT,OUTLINE3 PRINT DATA LINE-3 PUT SYSPRINT,OUTLINE4 PRINT DATA LINE-4 SPACE , CLOSE (SYSPRINT) CLOSE SYSPRINT DATASET SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* SLR 15,15 LOAD RETURN CODE = 0 B EXITPROC DO EXIT PROCESSING EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA * 0----+----1----+----2----+----3----+----4----+----5 TITLINE1 DC CL80'SYSTEM INFORMATION SUMMARY' TITLINE2 DC CL80'===================================================+ =============================' OUTLINE1 DC CL80'HWNAME=@@@@@@@@ LPARNAME=@@@@@@@@ LPAR#=@@ VM-USERI+ D=@@@@@@@@ SYSPLEX=@@@@@@@@' HWNAME EQU OUTLINE1+7,8 LPNAME EQU OUTLINE1+25,8 LPAR# EQU OUTLINE1+40,2 VMUID EQU OUTLINE1+53,8 PXNAME EQU OUTLINE1+70,8 OUTLINE2 DC CL80'IPL DATE=@@@@-@@@ TIME=@@:@@:@@ LOADPARM=@@@@@@@@(@+ @@@@@@@) IODF=@@ NUC=0@' IPLDATE EQU OUTLINE2+9 IPLTIME EQU OUTLINE2+23 LPPARM1 EQU OUTLINE2+41,8 LPPARM2 EQU OUTLINE2+50,8 IODFID EQU OUTLINE2+65,2 NUCID EQU OUTLINE2+73,1 OUTLINE3 DC CL80'PRODUCT NAME=@@@@(V@@R@@M@@) PID=@@@@@@@@(@@@@@@@@)+ MVS-LEVEL=@@@@@@@@(@@@@@@@@)' OSNAME EQU OUTLINE3+13,4 OSVERS EQU OUTLINE3+19 OSPID EQU OUTLINE3+33,8 OSOWNER EQU OUTLINE3+42,8 SPLEVEL EQU OUTLINE3+62,8 FMID EQU OUTLINE3+71,8 OUTLINE4 DC CL80'SYSNAME=@@@@@@@@ SYSID=@@@@ CPU-MODEL=@@@@(@@CPUS) + SERIAL#=@@@@@ STORAGE=@@@@@M' SYSNAME EQU OUTLINE4+8,8 SYSID EQU OUTLINE4+23,4 CPUMODEL EQU OUTLINE4+38,4 CPU# EQU OUTLINE4+43,2 SERIAL EQU OUTLINE4+59,5 STORAGE EQU OUTLINE4+73,5 SPACE , SYSPRINT DCB DDNAME=SYSPRINT, DCB FOR SYSPRINT DATASET + DSORG=PS,MACRF=PM,RECFM=FB,BLKSIZE=0,LRECL=80 *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* IHAPSA , PSA CVT DSECT=YES,LIST=YES, CVT + PREFIX=YES IHAECVT DSECT=YES,LIST=YES ECVT IEESMCA , SMCA IHAPCCA , PCCA IHACSD , CSD *---------------------------------------------------------------------* * S/370, ESA/390 REGISTER EQUATES * *---------------------------------------------------------------------* YREGS , OS: REGISTER EQUATES END // //