*DECK NETGET USETEXT AIPDEF USETEXT NP$GETS USETEXT NP$MODE USETEXT NP$NWL USETEXT NP$TAA USETEXT NP$STAT *IF DEF,XFR USETEXT NX$ACBF *ENDIF *IF,DEF,DEBUG USETEXT NP$DB *ENDIF PROC NETGET((ADR),HA,ATA,(TLMAX)) ; *IF DEF,IMS # *1DC NETGET * * 1. PROC NAME AUTHOR DATE * NETGET J.C. LEE 78/10/10 * NETGETL * * 2. FUNCTIONAL DESCRIPTION * THIS ROUTINE BUILDS A NETGET OR A NETGETL REQUEST IN THE * NWL WORKLIST, FOR A BLOCK FROM A SPECIFIED CONNECTION OR * LIST. REQUESTS FOR SUPERVISORY MESSAGES MAY BE MADE ON * CONNECTION / LIST ZERO. * * 3. METHOD USED * IF THE APPLICATION IS USING THE UPLINE DATA QUEUE FEATURE, * THIS PROGRAM CANNOT BE CALLED. * A NETGET ENTRY IS BUILD IN THE WORKLIST FOR A NON-ZERO ACN. * A NETGETL ENTRY IS BUILT IN THE WORKLIST FOR ALL ALN(S). FOR * A GET/GETL ON A ZERO ACN/ALN, A MESSAGE IS DELIVERED FROM * THE SMB (SUPERVISORY MESSAGE BUFFER), VIA NP$GSM. IF THE SMB * IS EMPTY, THEN A GSM WORKLIST ENTRY IS SENT TO NIP. IN THIS * CASE IF DEFER$PRO IS TRUE, THEN DEFER$GSM IS SET TO TRUE TO * INDICATE THAT THE APPLICATION HAS ASKED FOR A SUPERVISORY * MESSAGE. * * 4. ENTRY CONDITIONS * ADR - APPLICATION CONNECTION NUMBER / APPLICATION LIST NUMBER. * HA - HEADER AREA. * NEXT - NEXT AVAILABLE SPACE POINTER FOR WORKLIST. * SPACE$LEFT - NUMBER OF CELLS AVAILABLE IN NWL. * ATA - APPLICATION TEXT AREA. * TLMAX - MAXIMUM LENGTH OF DATA BLOCK. * * 5. EXIT CONDITIONS * DEFER$GSM - TRUE FOR ADR = 0 IF SMB IS EMPTY. * NEXT - NEXT AVAILABLE SPACE POINTER, RESET TO INITIAL VALUE. * SPACE$LEFT - NUMBER OF CELLS AVAILABLE IN WORKLIST, RESET * TO INITIAL VALUE. * * 6. COMDECKS CALLED AND SYMPL TEXTS USED. * AIPDEF NP$CRT NP$GETS NP$NWL * NP$TAA NP$STAT * NP$MODE * * 7. ROUTINES CALLED * NP$GET - PROCESS A GET REQUEST. * * 8. DAYFILE MESSAGES * * NETWORK APPLICATION ABORTED, RC = 53. * * * NETGET: REQUEST INVALID FOR DATA QUEUE. * * * * NETWORK APPLICATION ABORTED, RC = 54. * * * NETGETL: 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$GET; *IF,DEF,XFR PROC NETXFRC; *ENDIF END # LOCAL VARIABLES # ITEM ADR I, # APP CONNECTION / LIST NO # HA I, # HEADER ADDRESS # TLMAX I; # MAXIMUM TEXT LENGTH # DEF MAXTEXT #511#; # MAX MESSAGE SIZE ALLOWED # ARRAY ATA [0:MAXTEXT] S(1) ; ITEM WORD I (0); #**********************************************************************# # NETGET EXECUTION BEGINS HERE # OPCODE = OP$GET; *IF,DEF,STAT IAM = TYPE"GET"; *ENDIF IF GMBUSE THEN # UPLINE DATA QUEUE BEING USED # BEGIN NP$ERR("53"); # ABORT APP WITH ERROR MESSAGE # END LIST = FALSE; # SET FLAG FOR NOT LIST PROCESS# GOTO NETGET1; ENTRY PROC NETGETL((ADR),HA,ATA,(TLMAX)) ; OPCODE = OP$GETL; *IF,DEF,STAT IAM = TYPE"GETL"; *ENDIF IF GMBUSE THEN # UPLINE DATA QUEUE BEING USED # BEGIN NP$ERR("54"); # ABORT APP WITH ERROR MESSAGE # END LIST = TRUE; # SET FLAG FOR LIST PROCESSING # # STORE INPUT PARAMETERS IN COMMON BLOCK # NETGET1: ACLN = ADR; LOC$HA = LOC(HA); LOC$TA = LOC(ATA) ; TLMX = TLMAX; *IF DEF,DEBUG # SET UP PARAMETERS FOR DEBUG MESSAGE LOGGING # IF OPCODE EQ OP$GET THEN DB$CALL = LOC(NETGET); ELSE DB$CALL = LOC(NETGETL); *ENDIF NWL[NEXT] = 0; # CLEAR NWL OPCODE WORD # NWL$TA[NEXT] = LOC$TA; BS = OPABHSIZ; # SET NWL ENTRY SIZE # NP$GET; # VALIDATE CALL AND SET UP # *IF,DEF,XFR IF NUMFILEXFR NQ 0 # FILE TRANSFER OUTSTANDING # THEN NETXFRC; # CONTINUE TRANSFERRING FILE # *ENDIF RETURN; END # NETGET # TERM