cdc:nos2.source:nam5871:nrcsstp
Table of Contents
NRCSSTP
Table Of Contents
- [00011] PROC NRCSSTP(ACBD,PWLADD,FNTORD,REASON)
- [00044] PROC ABORT
- [00045] PROC OMSG
- [00046] PROC OSCHAPP
- [00047] PROC OSREQ
Source Code
- NRCSSTP.txt
- *DECK NRCSSTP
- USETEXT NIPDEF
- USETEXT ACB
- USETEXT APPSTAT
- USETEXT AT
- USETEXT MSGIDX
- USETEXT PWL
- USETEXT PARAMP
- USETEXT PT
- USETEXT SSTCOM
- PROC NRCSSTP(ACBD,PWLADD,FNTORD,REASON) ;
- #
- *****
- * 1.PROC NAME AUTHOR DATE
- * NRCSSTP L.T.NGUYEN 84/08/21
- *
- * 2.FUNCTIONAL DESCRIPTION:
- * MAKE SSTP CALL AND PROCESS REASON CODE RETURNED FROM O.S.
- *
- * 3.METHOD USED:
- * SETU UP SSTP PARAMETER BLOCK.
- * CALL OSREQ TO VALIDATE SSTP CALL.
- * PROCESS REASON CODE RETURNED:
- * - IF NON-ZERO REASON CODE:
- * IF REASON IS SWAPED OUT LINK THIS PWL TO ACB PWL RING.
- * ELSE SET UP TO ABORT APPLICATION LATER.
- *
- * 4.INPUT PARAMS:
- * ACBADD - ADDRESS OF ACB OF APPLICATION TO RECIEVE FILE.
- * PWLADD - WORKLIST FROM PIP.
- * FTNORD - ORDINAL FNT OF FILE TO BE SWITCHED.
- * REASON - REASON CODE RETURN TO CALLER IF ERROR ENCOUTERED.
- *
- * 5.ROUTINES USED:
- * OMSG : - SEND DAYFILE MESSAGE.
- * OSCHAPP: - SCHEDULE THIE APPLICATION.
- * OSREQ: - CALL OPERATING SYSTEM TO PROCESS SSTP.
- *
- *****
- #
- XREF
- BEGIN # EXTERNAL REFERENCE #
- PROC ABORT ;
- PROC OMSG ;
- PROC OSCHAPP ;
- PROC OSREQ ;
- END
- ITEM ACBD U ; # ACB ADDRESS #
- ITEM PWLADD U ; # PWL ADDRESS #
- ITEM FNTORD U ; # ORDINAL OF FILE #
- ITEM INDEX ;
- ITEM REASON U ; # REASON CODE RETURNED #
- BEGIN # BEGIN OF NRCSSTP #
- P<ACB> = ACBD ;
- P<PWLHDR> = PWLADD ;
- IF ATASBSO[ACBAN[0]] # APPLICATION SWAPPED OUT #
- THEN
- BEGIN
- REASON = RC$UCPSO; # NO NEED TO ISSUE SST CALL #
- END
- ELSE
- BEGIN
- SSTPARAM[0] = 0; # CLEAR SST PARAMETER WORD #
- SSTFNTS[0] = FNTORD; # FILE-S FNT ORDINAL IN NAM #
- SSTFC[0] = SSTSQFTUCP; # SST FUNCTION CODE #
- SSTJOBID[0] = ACBJNWD[0]; # APP JOB IDENTIFICATION #
- SSTPADDR[0] = LOC(SSTPARAM[0]);# FWA OF SST PARAMETER BLOCK #
- OSREQ(SSTCALL[0]); # ISSUE SST RA+1 CALL #
- REASON = SSTRC[0]; # SST COMPLETION STATUS #
- END
- IF REASON NQ 0
- THEN # SST ERROR PROCESSING #
- BEGIN
- IF NOT ATASBSO[ACBAN[0]]
- THEN
- BEGIN # ISSUE MESSAGE FOR ACTUAL #
- INDEX = REASON/8; # ATTEMPT TO ISSUE SST CALL #
- D14M2[0] = INDEX*O"100" + REASON - INDEX*8 + O"3333";
- D14M3[0] = SSTJSN[0];
- OMSG(DFMSG14,0);
- END
- IF REASON EQ RC$UCPSO
- THEN # APP SWAPPED OUT BY OS #
- BEGIN # RESUME PWL PROCESSING #
- ATPSO[ACBAN[0]] = TRUE; # SET PWL EXIST FLAG #
- OSCHAPP(P<ACB>); # SCHEDULE APPLICATION #
- IF PWLID[0] EQ PWLIDVALUE # PWL IS FROM INBOUND BUFFER #
- THEN # INITIALIZE PWL RING #
- BEGIN
- IF ACBPWLFP[0] EQ 0
- AND ACBPWLBP[0] EQ 0
- THEN
- BEGIN # PWL RING IS EMPTY #
- ACBPWLFP[0] = P<PWLHDR>;
- ACBPWLBP[0] = P<PWLHDR>;
- PWLNPWLFP[0] = LOC(ACBPWLFP[0]);
- PWLNPWLBP[0] = LOC(ACBPWLBP[0]);
- END # EMPTY PWL RING #
- ELSE
- BEGIN # PWL RING EXISTS, INSERT IT #
- PWLNPWLFP[0] = LOC(ACBPWLFP[0]) ; # FORWRAD TO FIRST ONE#
- PWLNPWLBP[0] = ACBPWLBP[0] ; # BACK TO CURRENT LAST #
- P<PWLHDR> = ACBPWLBP[0] ; # LOOKIN AT CURRENT BACK #
- PWLNPWLFP[0] = PWLADD ; # FORWARD POINTS TO NEW #
- ACBPWLBP[0] = PWLADD ; # ACB BACK TO NEW #
- END # INSERT INTO PWL RING #
- P<PWLHDR> = PWLADD ;
- PWLID[0] = PWLRIDVALUE; # SET PWL RING ID FOR PWL #
- END
- END
- ELSE
- BEGIN
- IF REASON EQ RC$UCPNF
- THEN # APPLICATION FAILED #
- FAILADR = P<ACB>; # APPLICATION-S ACB ADDRESS #
- ELSE
- BEGIN
- IF REASON EQ RC$FNTNS OR # NO ROOM IN UCP-S LOCAL FNT #
- REASON EQ RC$FLIMIT # UCP-S FILE LIMIT REACHED #
- THEN # ABORT APPLICATION #
- BEGIN
- ABTAPPF = XFNTERR; # FILE LIMIT OR FNT SPACE ERROR #
- ABTADDR = P<ACB>; # APPLICATION-S ACB ADDRESS #
- END
- ELSE # NAM SST REQUEST ERROR #
- ABORT(0,0); # ABORT NIP #
- END
- END
- END
- RETURN ;
- END
- TERM
cdc/nos2.source/nam5871/nrcsstp.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator