*DECK NETPUTF
USETEXT AIPDEF
USETEXT NP$GETS
USETEXT NP$MODE
USETEXT NP$NWL
USETEXT NP$PUTS
USETEXT NP$STAT
*IF,DEF,DEBUG
USETEXT NP$DB
*ENDIF
PROC NETPUTF(HA,(NA),TAAA);
*IF DEF,IMS
#
*1DC NETPUTF
*
* 1. PROC NAME AUTHOR DATE
* NETPUTF J.C. LEE 78/10/10
*
* 2. FUNCTIONAL DESCRIPTION
* ACCEPTS A DATA BLOCK OR A SUPERVISORY BLOCK FROM THE
* APPLICATION, FORMATS A PUTF WORKLIST ENTRY AND SENDS THE
* WORKLIST TO NIP WHEN APPROPRIATE
*
* 3. METHOD USED
* IF THE APPLICATION IS USING THE UPLINE DATA QUEUE FEATURE OR
* THE DOWNLINE BUFFERING FEATURE, THIS PROGRAM CANNOT BE CALLED.
* CALLS NP$PUT INITIALIZE CELLS FOR PUT REQUEST.
* UPON RETURN FROM NP$PUT IT CALLS NP$PUTF TO CONTINUE
* THE FORMAT THE NETPUTF REQUEST. ON RETURN FROM NP$PUTF
* IT WILL UPDATE THE S AND I BITS IN THE NSUP WORD.
* IT CHECK IF THERE IS MORE ROOM FOR ANOTHER WORKLIST
* ENTRY,OR,IF IT IS NOT A SUPERVISORY MESSAGE. IF
* CONDITION ARE TRUE IT RETURN TO THE APPLICATION
* WITHOUT SENDING THE WORKLIST TO NIP.
* SOME SUBSEQUENCE CALL TO AIP WILL TRIGGER THE
* WORKLIST TO BE SENT TO NIP FOR PROCESSING.
*
* 4. ENTRY CONDITIONS
* HA - HEADER AREA.
* NA - NUMBER OF FRAGMENTED BUFFERS IN TAA.
* TAA - TEXT AREA ARRAY.
* NEXT - NEXT AVAILABLE SPACE POINTER IN WORKLIST.
* SPACE$LEFT - NUMBER OF CELLS AVAILABLE IN WORKLIST.
*
* 5. EXIT CONDITIONS
* NEXT - UPDATED TO NEXT AVAILABLE SPACE POINTER IN WORKLIST.
* SPACE$LEFT - UPDATED TO NUMBER OF CELLS AVAILABLE IN WORKLIST.
*
* 6. COMDECKS CALLED AND SYMPL TEXTS USED.
* AIPDEF NP$CRT NP$DB NP$GETS
* NP$MODE NP$NWL NP$PUTS NP$STAT
*
* 7. ROUTINES CALLED
* NP$PUT - PROCESS A PUT REQUEST.
* NP$PUT - INITIALIZE CELLS FOR PUTF REQUEST.
* NP$PUTF - FORMAT A -PUTF- NWL REQUEST.
* NP$SEND - SEND NWL TO NIP.
* NP$UCV - UPDATE CONTROL VARIABLES.
* NP$USI - UPDATE S AND I BITS IN NS.
*
* 8. DAYFILE MESSAGES
* * NETWORK APPLICATION ABORTED, RC = 58. *
* * NETPUT: REQUEST INVALID FOR DATA QUEUE. *
*
#
*ENDIF
BEGIN
*CALL NP$CRT
#
ROUTINES CALLED
#
XREF
BEGIN
PROC NP$ERR; # ISSUE ERR MSG AND ABORT APP #
PROC NP$PUT; # PROCESS A PUT REQUEST #
PROC NP$PUTF; # FORMAT A -PUTF- NWL ENTRY #
PROC NP$SEND; # SEND NWL TO NIP #
PROC NP$UCV; # UPDATE CONTROL VARIABLES #
PROC NP$USI; # UPDATE S AND I BITS IN NSUP #
END
#
LOCAL VARIABLES
#
ITEM HA I; # HEADER AREA #
ITEM NA I; # NO OF FRAGMENTED BUFFERS #
ITEM TAAA I; # TEXT AREA ARRAY #
#**********************************************************************#
#
NETPUTF EXECUTION BEGINS HERE
#
OPCODE = OP$PUTF; # SAVE INPUT PARAM IN COMMON #
LOC$HA = LOC(HA);
LOC$TA = LOC(TAAA);
ACLN = NA; # ACLN SET TO NA #
*IF,DEF,STAT
IAM = TYPE"PUTF";
IF GMBUSE OR DOWNUSE # UPLINE DATA QUEUE OR DOWNLINE#
THEN # BUFFER FEATURE BEING USED #
BEGIN
NP$ERR("58"); # ABORT APP WITH ERROR MESSAGE #
END
*ENDIF
*IF DEF,DEBUG
DB$CALL = LOC(NETPUTF);
*ENDIF
NP$PUT; # PROCESS A PUT REQUEST #
NP$PUTF; # PR0CESS NETPUTF REQUEST #
NP$UCV; # UPDATE CONTROL VARIABLES #
IF ISSUE
THEN
NP$SEND;
NP$USI; # UPDATE THE S AND I BITS #
RETURN;
END # NETPUTF #
TERM