User Tools

Site Tools


cdc:nos2.source:nam5871:netgetf

NETGETF

Table Of Contents

  • [00011] PROC NETGETF((ADR),HA,(NA),TAAA)
  • [00101] PROC NP$ERR
  • [00102] PROC NP$GET
  • [00131] ENTRY PROC NETGTFL((ADR),HA,(NA),TAAA)

Source Code

NETGETF.txt
  1. *DECK NETGETF
  2. USETEXT AIPDEF
  3. USETEXT NP$GETS
  4. USETEXT NP$MODE
  5. USETEXT NP$NWL
  6. USETEXT NP$STAT
  7. USETEXT NP$TAA
  8. *IF,DEF,DEBUG
  9. USETEXT NP$DB
  10. *ENDIF
  11. PROC NETGETF((ADR),HA,(NA),TAAA);
  12. *IF DEF,IMS
  13. #
  14. *1DC NETGETF
  15. *
  16. * 1. PROC NAME AUTHOR DATE
  17. * NETGETF J.C. LEE 78/10/10
  18. * NETGTFL
  19. *
  20. * 2. FUNCTIONAL DESCRIPTION
  21. * THIS ROUTINE BUILDS A NETGETF OR A NETGTFL REQUEST IN THE
  22. * NWL WORKLIST, FOR A BLOCK FROM THE SPECIFIED CONNECTION OR
  23. * LIST. REQUESTS FOR SUPERVISORY MESSAGES MAY BE MADE ON
  24. * CONNECTION / LIST ZERO.
  25. *
  26. * 3. METHOD USED
  27. * IF THE APPLICATION IS USING THE UPLINE DATA QUEUE FEATURE, OR
  28. * THE DOWNLINE BUFFERING FEATURE, THIS PROGRAM CANNOT BE CALLED.
  29. * A NETGETF ENTRY IS BUILT IN THE WORKLIST FOR A NON-ZERO ACN.
  30. * A NETGTFL IS BUILT IN THE WORKLIST FOR ALL ALN.
  31. * A NETGTFL MAY HAVE ONE OF THE FOLLOWING FORMAT:
  32. *
  33. * 1. I-----------------------------------------------------I
  34. * I OP CODE WORD WITH A NON-ZERO LOC OF TEXT AREA ARRAY I
  35. * I-----------------------------------------------------I
  36. * I ABH WORD CONTAINING TLMAX AND THE CONNECTION NO I
  37. * I-----------------------------------------------------I
  38. *
  39. * 2. I-----------------------------------------------------I
  40. * I OP CODE WORD WITH A ZERO LOC OF TEXT AREA ARRAY I
  41. * I-----------------------------------------------------I
  42. * I ABH WORD CONTAINING TLMAX AND THE CONNECTION NO I
  43. * I-----------------------------------------------------I
  44. * I A NULL WORD - SO THAT NIP DOES NOT NEED ALLOCATE I
  45. * I ANOTHER BUFFER TO SF.LIST THE TEXT AREA ARRAY. (AN I
  46. * I SF.LIST REQUIRES TWO SUBSYSTEM FUNCTION PARAMETER I
  47. * I WORDS PLUS A WORD FOR NIP"S BUFFER HEADER. I
  48. * I-----------------------------------------------------I
  49. * I TEXT AREA ARRAY CONTAINING SIZES AND LOCATIONS OF I
  50. * I EACH FRAGMENTED BUFFERS. I
  51. * I-----------------------------------------------------I
  52. *
  53. * THE TEXT AREA ARRAY CONTAINING SIZES AND LOCATIONS OF BUFFER
  54. * FRAGMENTS, IS COPIED TO THE NWL IF THERE IS ENOUGH ROOM:
  55. * 2 HEADER WORDS (OP, ABH) + A NULL WORD + LTAA + 2 WORDS FOR A
  56. * GSM ENTRY. FOR A GETF/GTFL ON A ZERO ACN/ALN, A MESSAGE IS
  57. * DELIVERED FROM THE SMB, VIA NP$GSM.
  58. *
  59. * 4. ENTRY CONDITIONS
  60. * ADR - APPLICATION CONNECTION NUMBER / APPLICATION LIST NUMBER
  61. * HA - HEADER AREA
  62. * NEXT - NEXT AVAILABLE SPACE POINTER FOR WORKLIST
  63. * SPACE$LEFT - NUMBER OF CELLS AVAILABLE IN NWL
  64. * NA - NUMBER OF FRAGMENTED BUFFERS
  65. * TAA - TEXT AREA ARRAY
  66. *
  67. * 5. EXIT CONDITIONS
  68. * DEFER$GSM - TRUE FOR ADR=0 IF SMB IS EMPTY
  69. * LTAA - RESET TO ZERO
  70. * NEXT - NEXT AVAILABLE SPACE POINTER, RESET TO INITIAL VALUE
  71. * SPACE$LEFT - NUMBER OF CELLS AVAILABLE IN WORKLIST, RESET TO
  72. * INITIAL VALUE.
  73. *
  74. * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
  75. * AIPDEF NP$CRT NP$DB NP$GETS
  76. * NP$NWL NP$STAT NP$TAA
  77. * NP$MODE
  78. *
  79. * 7. ROUTINES CALLED
  80. * NP$GET - PROCESS A GET REQUEST.
  81. *
  82. * 8. DAYFILE MESSAGES
  83. * * NETWORK APPLICATION ABORTED, RC = 55. *
  84. * * NETGETF: REQUEST INVALID FOR DATA QUEUE. *
  85. *
  86. * * NETWORK APPLICATION ABORTED, RC = 56. *
  87. * * NETGTFL: REQUEST INVALID FOR DATA QUEUE. *
  88. *
  89.  #
  90. *ENDIF
  91.  
  92. BEGIN
  93.  
  94. *CALL NP$CRT
  95. CONTROL LIST;
  96. #
  97.   ROUTINES CALLED
  98. #
  99. XREF
  100. BEGIN
  101. PROC NP$ERR; # ISSUE ERR MSG AND ABORT APP #
  102. PROC NP$GET;
  103. END
  104. #
  105.   LOCAL VARIABLES
  106. #
  107. ITEM
  108. ADR I, # APP CONNECTION / LIST NO #
  109. HA I, # HEADER ADDRESS #
  110. NA I, # NO OF FRAGMENTED BUFFERS #
  111. NAA I, # TEMPORARY VARIABLE #
  112. TAAA I, # TEXT ARRAY AREA ADDRESS #
  113. I I, # TEMPORARY VARIABLE #
  114. J I; # TEMPORARY VARIABLE #
  115. #**********************************************************************#
  116. #
  117.   NETGETF EXECUTION BEGINS HERE
  118. #
  119. OPCODE = OP$GETF;
  120. *IF,DEF,STAT
  121. IAM = TYPE"GETF";
  122. IF GMBUSE OR DOWNUSE # UPLINE DATA QUEUE OR DOWNLINE#
  123. THEN # BUFFER FEATURE BEING USED. #
  124. BEGIN
  125. NP$ERR("55"); # ABORT APP WITH ERROR MESSAGE #
  126. END
  127. LIST = FALSE; # SET FLAG FOR NOT LIST PROCESS#
  128. *ENDIF
  129. GOTO NETGTF1;
  130.  
  131. ENTRY PROC NETGTFL((ADR),HA,(NA),TAAA);
  132. OPCODE = OP$GTFL;
  133. *IF,DEF,STAT
  134. IAM = TYPE"GTFL";
  135. IF GMBUSE OR DOWNUSE # UPLINE DATA QUEUE OR DOWNLINE#
  136. THEN # BUFFER FEATURE BEING USED #
  137. BEGIN
  138. NP$ERR("56"); # ABORT APP WITH ERROR MESSAGE #
  139. END
  140. LIST = TRUE; # SET FLAG FOR LIST PROCESSING #
  141. *ENDIF
  142.  
  143. NETGTF1:
  144. NAA = NA;
  145. #
  146.   STORE INPUT PARAMETERS IN COMMON BLOCK
  147. #
  148. ACLN = ADR;
  149. LOC$HA = LOC(HA);
  150. LOC$TA = LOC(TAAA);
  151. TLMX = 0;
  152. LTAA = NAA;
  153. *IF DEF,DEBUG
  154. NP$NA = NA;
  155. *ENDIF
  156. P<TAA> = LOC$TA;
  157. FOR I=1 STEP 1 UNTIL NA DO
  158. TLMX = TLMX + TAASIZE[I];
  159. *IF DEF,DEBUG
  160.  
  161. #
  162.   SET UP PARAMETERS FOR DEBUG MESSAGE LOGGING
  163. #
  164. IF OPCODE EQ OP$GETF
  165. THEN
  166. DB$CALL = LOC(NETGETF);
  167. ELSE
  168. DB$CALL = LOC(NETGTFL);
  169.  
  170. *ENDIF
  171. #
  172.   SET UP GETF OR GTFL NWL ENTRY
  173. #
  174. NWL[NEXT] = 0; # CLEAR NWL OPCODE WORD #
  175. BS = OPABHSIZ; # INITIALIZE NWL ENTRY SIZE #
  176. NWL$LTAA[NEXT] = NAA; # LENGTH OF TEXT AREA ARRAY #
  177. IF NA LQ (SPACE$LEFT - GMMESIZE - NTRYSIZ3 - OPABHSIZ) AND
  178. NAA LQ MAXNA
  179. THEN # SPACE AVAILABLE IN NWL FOR #
  180. BEGIN # TEXT AREA ARRAY #
  181. BS = NA + NTRYSIZ3; # RESET NWL ENTRY SIZE #
  182. I = NEXT + NTRYSIZ3 - 1;
  183. FOR J=1 STEP 1 UNTIL NA DO # COPY TAA TO NWL #
  184. NWL[I+J] = TAAWORD[J];
  185. END
  186. ELSE
  187. NWL$TA[NEXT] = LOC$TA; # TAA CANNOT FIT INTO NWL #
  188.  
  189. NP$GET; # VALIDATE CALL AND SET UP #
  190.  
  191. RETURN;
  192. END # NETGETF #
  193. TERM
cdc/nos2.source/nam5871/netgetf.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator