*DECK NETPUT
USETEXT AIPDEF
USETEXT NP$GETS 
USETEXT NP$MODE 
USETEXT NP$NWL
USETEXT NP$ONAM 
USETEXT NP$PUTS 
USETEXT NP$STAT 
*IF DEF,XFR,2 
USETEXT NX$ACBF 
USETEXT NX$ACBX 
*IF,DEF,DEBUG 
USETEXT NP$DB 
*ENDIF
 PROC NETPUT(HA,ATA) ;
*IF DEF,IMS 
 #
*1DC  NETPUT
* 
*     1. PROC NAME           AUTHOR              DATE 
*        NETPUT              J.C. LEE            78/10/10 
* 
*     2. FUNCTIONAL DESCRIPTION 
*        ACCEPTS A DATA BLOCK OR A SUPERVISOEY BLOCK FROM THE 
*        APPLICATION, FORMATS A PUT WORKLIST ENTRY AND SENDS THE
*        WORKLIST TO NIP WHEN APPROPRIATE.
* 
*     3. METHOD USED
*        IF THE APPLICATION IS USING THE UPLINE DATA QUEUE FEATURE, 
*        THIS PROGRAM CANNOT BE CALLED. 
*         CALLS NP$PUT  INITIALIZE CELLS FOR PUT REQUEST. 
*         UPON RETURN FROM NP$PUT IT CONTINUES TO FORMAT
*         THE NETPUT REQUEST AND UPDATES THE S AND I BITS 
*         IN THE NSUP WORD. 
*         THEN CHECKS IF THERE IS STILL ROOM FOR ANOTHER
*         WORKLIST ENTRY, OR, IF IT IS NOT A SUPERVISORY
*         MESSAGE. IF CONDITIONS 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.
*        ATA - APPLICATION TEXT AREA. 
*        NEXT - NEXT AVAILABLE SPACE POINTER FOR WORKLIST.
*        SPACE$LEFT - NUMBER OF CELLS AVAILABLE IN NWL. 
* 
*     5. EXIT CONDITIONS
*        NEXT - INDEX OF NEXT AVAILABLE WORKLIST CELL, REFLECTING 
*               THE NETPUT ENTRY. 
*        SPACE$LEFT - NUMBER OF AVAILABLE WORKLIST CELLS, REFLECTING
*                     THE NETPUT ENTRY. 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        AIPDEF    NP$CRT    NP$DB     NP$GETS
*        NP$MODE   NP$NWL    NP$ONAM   NP$PUTS
*        NP$STAT
* 
*     7. ROUTINES CALLED
*         NP$PUT - INITIALIZE CELLS FOR PUT REQUEST.
*         NP$SEND - SEND NWL TO NIP.
*         NP$UCV - UPDATES CONTROL VARIABLES. 
*         NP$USI - UPDATES S AND I BITS IN NS.
* 
*     8. DAYFILE MESSAGES 
*        * NETWORK APPLICATION ABORTED, RC = 57. *
*        * 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$SEND;                     # SEND NWL TO NIP              #
      PROC NP$UCV;                      # UPDATE CONTROL VARIABLES     #
      PROC NP$USI;                      # UPDATE S AND I BITS IN NSUP  #
*IF DEF,XFR,1 
      PROC NETXFRC;                 # CONTINUE FILE TRANSFERRING       #
      END 
# 
      LOCAL VARIABLES 
# 
      ITEM HA I;                        # HEADER AREA                  #
      ITEM ATA I ;
    BASED ARRAY MEM P(1); 
      BEGIN 
      ITEM MEMWORD I; 
      END 
#**********************************************************************#
# 
      NETPUT EXECUTION BEGINS HERE
# 
      OPCODE = OP$PUT;                  # SAVE INPUT PARAM IN COMMON   #
      LOC$TA = LOC(ATA) ; 
      LOC$HA = LOC(HA); 
*IF,DEF,STAT
      IAM = TYPE"PUT";
      IF GMBUSE 
      THEN                              # UPLINE DATA QUEUE BEING USED #
        BEGIN 
        NP$ERR("57");                   # ABORT APP WITH ERROR MESSAGE #
        END 
*ENDIF
  
*IF DEF,DEBUG 
      DB$CALL = LOC(NETPUT);
*ENDIF
  
      NP$PUT;                           # PROCESS A PUT REQUEST        #
  
*IF DEF,XFR 
# 
      IF THERE ARE FILE BEING TRANSFERRED OUTTANDING, CONTINUE... 
# 
      IF NUMFILEXFR GR 0
      THEN
        NETXFRC;
*ENDIF
      RETURN; 
   END #NETPUT# 
TERM
