*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
