*DECK HPSHISD USETEXT NIPDEF USETEXT ACB USETEXT AT USETEXT AHEADER USETEXT APPSTAT USETEXT MSGIDX USETEXT PARAMS USETEXT PT USETEXT SUPMSG PRGM HPSHISD ; STARTIMS ; # *1DC HPSHISD * 1. PROC NAME AUTHOR DATE * HPSHISD L.T.NGUYEN 82/03/02 * * 2. FUNCTIONAL DESCRIPTION : * SEND THE SHUT/INS SM TO ALL APPLICATIONS OR TO A SPECIFIED * APPLICATION. * * 3. METHOD: * - TO ALL APPLICATIONS ( SHISAN IS ZERO ) * LOOP THROUGH THE AT AND FORM SHUT/INS SM FOR APPL. * EXCEPT NVF APPLICATION. * - TO A SPECIFIED APPLICATION ( SHISAN IS THE APPL. NUMBER) * USING SHISAN AS INDEX INTO AT. FORM AND SEND SHUT/INS SM. * * 4. INPUT PARAMS : * PARAMS1 - ADDRESS OF SHUTDOWN MESSAGE FROM NVF * * 5. OUTPUT PARAMS : * NONE. * * 6. COMDECKS CALLED * NIPDEF ACB AT * AHEADER APPSTAT MSGIDX * PARAMS PT SUPMSG * OSSIZE * * 7. ROUTINES CALLED * ABORT - ABORT NIP * MGETS - TO GET BUFFER FOR SM. * BLINK - LINK SM TO ACB * OSCHAPP - SCHEDULE THE APPLICATION * * 8.DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION * "SH/ISD ON NON-EXISTENT AN " * THIS IS A SECONDARY OVERLAY CALLED BY HPPUT. * W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY *CALL OSSIZE * * # STOPIMS ; XREF BEGIN PROC ABORT ; PROC BLINK ; # LINK SM TO ACB # PROC MGETS ; # GET BUFFER FOR SM # PROC OSCHAPP ; # SCHEDULE THE APPLICATION # LABEL RJMAIN ; END ITEM I ; ITEM IMSHUTD B ; # IMMEDIATE SHUT DOWN FLAG # ITEM SMADDR ; # ADDRESS OF SM # BEGIN # HPSHISD # P = PARAMS1 + BLKHSIZE + ABHSIZE ; # SH/ISD SM # P = P ; IF SHISF[0] THEN IMSHUTD = TRUE ; # IMMEDIATE SHUT DOWN # ELSE IMSHUTD = FALSE ; # GRADUATE SHUT DOWN # IF SHISAN[0] EQ 0 THEN BEGIN # SEND SHUT/INSD SM TO ALL # FOR I = ATHSIZE + 1 STEP 1 UNTIL ATHAN[0] DO BEGIN # LOOP THROUGH AT TO ALL ACB # P = ATACBA[I] ; # ACB ADDRESS # IF P NQ 0 AND NOT ATNVFN[I] AND NOT ATNVFF[I] THEN BEGIN # NONE ZERO ACB ADDRESS # MGETS(LSHUT + BLKHSIZE + ABHSIZE, SMADDR,TRUE) ; # SET UP APPLICATION BLOCK HEADER # P = SMADDR + BLKHSIZE ; ABHABT[0] = APPCMD ; ABHACT[0] = CT60TRANS ; ABHTLC[0] = LSHUT ; # SET UP THE SUPERVISORY MESSAGE # P = SMADDR + BLKHSIZE + ABHSIZE ; PFCSFC[0] = SHUINS ; SHUTF[0] = IMSHUTD ; BLINK(SMADDR,P) ; OSCHAPP(P) ; END # NONE ZERO ACB ADDRESS # END # LOOP THROUGH AT TO ALL ACB # SHUTDOWN = TRUE ; # SHUTTING DOWN NETWORK # END # SEND SHUT/INSD TO ALL APPLS # ELSE BEGIN # SEND TO SPECIFIED APPLICATION # P = ATACBA[SHISAN[0]] ; # APPL. CONTROL BLOCK # IF P NQ 0 THEN BEGIN IF NOT ATNVFN[SHISAN[0]] AND NOT ATNVFF[SHISAN[0]] THEN BEGIN IF (ACBORD0[0]) # THIS APPLICATION ALREADY SENT # # SAC/NCL TO SET ERROR CONDITION# THEN # FOR SHI/SD/SM # BEGIN ACBABTSH[0] = TRUE ; # READY TO ABORT THIS APPL # # AND DONT QUEUE ANY SM # GOTO RJMAIN ; END MGETS(LSHUT + BLKHSIZE + ABHSIZE,SMADDR,TRUE) ; P = SMADDR + BLKHSIZE ; ABHABT[0] = APPCMD ; ABHACT[0] = CT60TRANS ; ABHTLC[0] = LSHUT ; P = SMADDR + BLKHSIZE + ABHSIZE ; PFCSFC[0] = SHUINS ; SHUTF[0] = IMSHUTD ; BLINK(SMADDR,P) ; OSCHAPP(P) ; END END ELSE BEGIN # SHUT DOWN RECEIVED ON NON-EX # D16AN = SHISAN ; # NON-EXISTENCE AN # ABORT(DFMSG16,0) ; # ABORT WITH DAYFILE MESSGAE # END # SHUT DOWN ON NON-EXISTENCE AN # END # SEND TO SPECIFIED APPLICATION # GOTO RJMAIN ; END TERM