//USZCZT0A JOB (ADSS),'#07B42 ZELDEN', // NOTIFY=&SYSUID, // CLASS=M,MSGCLASS=H,MSGLEVEL=(1,1) //* //* //ASMACL PROC //C EXEC PGM=ASMA90 //SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR //SYSUT1 DD DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND), // UNIT=SYSALLDA,DCB=BUFNO=1 //SYSPRINT DD SYSOUT=* //SYSLIN DD DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND), // UNIT=SYSALLDA,DISP=(MOD,PASS), // DCB=(BLKSIZE=3040,LRECL=80,RECFM=FB,BUFNO=1) //L EXEC PGM=HEWL,PARM='MAP,LET,LIST,NCAL',COND=(8,LT,C) //SYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1,1)), // DSN=&&GOSET(GO) //SYSUT1 DD DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND), // UNIT=SYSALLDA,DCB=BUFNO=1 //SYSPRINT DD SYSOUT=* // PEND //ASMACL EXEC ASMACL,PARM.L='XREF,LIST' //C.SYSIN DD * TITLE 'ACBCHECK - CHECK IF VTAM ACB IS AVAILABLE' PRINT NOGEN *************************************************************** *** THIS PROGRAM WILL CHECK IF A VTAM ACB IS AVAILABLE, *** *** IF IT IS NOT THE PROGRAM WILL WAIT 15 SECONDS AND TRY *** *** AGAIN. IT WILL KEEP TRYING FOR UP TO 15 MINUTES. *** *** *** *** IT CAN BE PUT INTO STCS AS A FIRST STEP SO THE STC CAN *** *** BE STARTED VIA COMMNDXX AT IPL BEFORE VTAM IS ACTIVE. *** *** *** *** THE PROGRAM MUST BE PASSED A PARM OF THE ACB TO CHECK. *** *************************************************************** *** SAMPLE JCL: *** *** //ACBCHECK JOB (ACCT),'CHECK VTAM ACB',CLASS=M *** //STEP1 EXEC PGM=ACBCHECK,PARM=TSO *** // *** * * REGISTER EQUATES AND USAGE * R01 EQU 1 INITIAL POINTER TO INPUT PARM R02 EQU 2 WORK REGISTER R03 EQU 3 POINTS TO PARM VALUE R04 EQU 4 COUNT OF RETRIES R05 EQU 5 LOADED WITH CONSTANT 1 R06 EQU 6 LOADED WITH CONSTANT 60 R12 EQU 12 BASE REGISTER R13 EQU 13 POINTER TO SAVE AREA R14 EQU 14 LINKAGE REGISTER (RETURN ADDRESS) R15 EQU 15 LINKAGE REGISTER (ENTRY POINT) * ACBCHECK CSECT USING *,R12 SET UP REG 12 AS BASE REG B PASTID BRANCH PAST MODULE ID DC C'ACBCHECK &SYSDATE &SYSTIME ' DC C'*** AUTHOR: MARK ZELDEN ***' PASTID SAVE (14,12) SAVE REGISTERS LR R12,R15 SET UP ADDRESSABILITY LR R02,R13 SAVE ADDR OF PREVIOUS SAVEAREA LA R13,SAVEAREA POINT TO CURRENT SAVEAREA ST R13,8(R02) SAVE THIS PROGRAM'S SAVEAREA ADDRESS ST R02,4(R13) SAVE CALLERS SAVEAREA ADDRESS * ==================================================================== L R03,0(R01) POINT TO PARM VALUE SR R04,R04 ZERO COUNT REG SR R02,R02 ZERO EX REG LH R02,0(R03) LOAD EX REG FROM PARM LENGTH LTR R02,R02 CHECK REGISTER FOR LENGTH BZ NOPARM BRANCH IF ZERO BCTR R02,0 DECREMENT FOR MOVE EX R02,MVACBNM MOVE PARM INTO ACBNAME * LA R05,1 LOAD COUNT "AR" REGISTER WITH 1 LA R06,60 LOAD COUNT "CR" REGISTER WITH 60 * CHECKACB DS 0H CR R04,R06 DOES WAIT COUNT = 60 (15 MINUTES) ? BE NOTIME YES, BRANCH SR R15,R15 ZERO REG 15 OPEN (TESTACB) TRY TO OPEN VTAM ACB LTR R15,R15 DID IT OPEN BZ ACBOPEN YES- GO ON MVC WAITWTO+40(8),ACBNAME PLUG WTO WITH ACB NAME WAITWTO WTO 'ACBCHECK - WAITING FOR VTAM ACB XXXXXXXX TO BECOME AVAIX LABLE',ROUTCDE=(2,8,11),DESC=(6) STIMER WAIT,DINTVL=TIMEVAL SET TO WAIT FOR 15 SECS AR R04,R05 INCREMENT COUNT REGISTER B CHECKACB GO TRY AGAIN ACBOPEN DS 0H MVC OPENWTO+28(8),ACBNAME PLUG WTO WITH ACB NAME OPENWTO WTO 'ACBCHECK - VTAM ACB XXXXXXXX OPENED SUCCESSFULLY, NOW BX EING CLOSED',ROUTCDE=(2,8,11),DESC=(6) CLOSE (TESTACB) CLOSE VTAM ACB MVC CONTWTO+44(8),ACBNAME PLUG WTO WITH ACB NAME CONTWTO WTO 'ACBCHECK - JOB WAITING FOR VTAM ACB XXXXXXXX WILL NOW CX ONTINUE',ROUTCDE=(2,8,11),DESC=(6) B RETURN RETURN SPACE 2 NOPARM DS 0H WTO 'ACBCHECK - NO PARM VALUE ENTERED - JOB CANCELLED', X ROUTCDE=(2,8,11),DESC=(6) ABEND 01 U0001 ABEND - NO DUMP B RETURN RETURN NOTIME DS 0H WTO 'ACBCHECK - RETRY TIME LIMIT EXCEEDED - JOB CANCELLED', X ROUTCDE=(2,8,11),DESC=(6) ABEND 02 U0002 ABEND - NO DUMP RETURN L R13,4(R13) RESTORE CALLERS SAVAREA ADDRESS RETURN (14,12),RC=0 RETURN CONTROL AND SET COND CODE TO 0 EJECT * ==================================================================== MVACBNM MVC ACBNAME(0),2(3) EXECUTED MOVE INSTRUCTION TIMEVAL DS 0CL8 TIME TO WAIT (15 SEC.) DC CL2'00' HOURS DC CL2'00' MINUTES DC CL2'15' SECONDS DC CL2'00' TENTHS AND HUNDREDTHS APPLIDID DS 0XL9 DC XL1'08' ACBNAME DC CL8' ' VTAM ACB NAME SAVEAREA DS 18F SAVE AREA TESTACB ACB AM=VTAM,APPLID=APPLIDID,MACRF=NLOGON END ACBCHECK //L.SYSLMOD DD DSN=MPSYS3.USZCZT0.LOADLIB(ACBCHECK),DISP=SHR,UNIT=SYSDA