User Tools

Site Tools


cdc:nos2.source:nam5871:hlstdx

HLSTDX

Table Of Contents

  • [00012] PRGM HLSTDX
  • [00082] PROC HUPDDAW
  • [00083] PROC OVLCALL
  • [00084] PROC XTRACE

Source Code

HLSTDX.txt
  1. *DECK HLSTDX
  2. USETEXT NIPDEF
  3. USETEXT ACB
  4. USETEXT ACNB
  5. USETEXT ACNT
  6. USETEXT APPSTAT
  7. USETEXT AT
  8. USETEXT NWLNTRY
  9. USETEXT OVERLAY
  10. USETEXT PARAMS
  11. USETEXT SUPMSG
  12. PRGM HLSTDX; # PROCESS A HALF/FULL DUPLEX MODE #
  13. BEGIN
  14. *IF DEF,IMS
  15. STARTIMS;
  16. #
  17. *1DC HLSTDX
  18. *
  19. * 1.PROC NAME AUTHOR DATE
  20. * HLSTDX S.KRULEVITCH 79/02/28
  21. *
  22. * 2. FUNCTIONAL DESCRIPTION.
  23. * PROCESS LST/HDX AND LST/FDX SUPERVISORY MESSAGES TO ALLOW
  24. * SELECTION/DESELECTION OF HALF DUPLEX MODE ON/ FULL DUPLEX MODE
  25. *
  26. * 3. METHOD USED.
  27. * DETERMINE OF LST/FDX OR LST/HDX
  28. * NONZERO ACN:
  29. * FOR ALL ACTIVE CONNECTIONS (IF ACN IS ZERO) OR
  30. * FOR A SPECIFIC CONNECTION (IF ACN IS NON-ZERO)
  31. * DO THE FOLLOWING
  32. * UPDATE THE HALF DUPLEX MODE FLAG
  33. * IF FULL DUPLEX - CLEAR THE TEMPORARY LIST OFF FLAG
  34. * IF HALF DUPLEX AND THE INITIAL STATE OF THE
  35. * CONNECTION IS DISABLED - SET THE TEMPORARY
  36. * LIST OFF FLAG (ELSE CLEAR THE TLO FLAG).
  37. * LOCATE ACNB ON NONZERO CONNECTION
  38. * IF ACNB NOT FOUND, RETURN A LOGICAL ERROR
  39. * IF ACNB FOUND
  40. * CLEAR OR SET HALF DUPLEX MODE FLAG
  41. * IF LST/FDX ALSO CLEAR TEMPORARY LIST FLAG
  42. * ZERO ACN:
  43. * CLEAR OR SET HALF DUPLEX FLAG IN ACB
  44. * FOR EACH ACTIVE CONNECTION"S ACNB
  45. * CLEAR OR SET HALF DUPLEX MODE FLAG
  46. * IF LST/FDX ALSO CLEAR TEMPORARY LIST OFF FLAG
  47. *
  48. * 4. ENTRY PARAMETERS.
  49. * ACBADDR CURRENT ACB ADDRESS
  50. * WLADDR CURRENT WORKLIST ENTRY
  51. *
  52. * 5. EXIT PARAMETERS.
  53. * ACNBH HALF DUPLEX MODE FLAG
  54. * ACNBTLO TEMPORARY LIST OFF FLAG
  55. *
  56. * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
  57. * ACB ACNB ACNT APPSTAT AT
  58. * NIPDEF NWLNTRY OVERLAY PARAMS PT
  59. * SUPMSG
  60. *
  61. * 7. ROUTINES AND OVERLAYS CALLED
  62. * HLGLERR OVL ISSUE LOGICAL ERROR
  63. * HUPDDAW UPDATE DATA AVAILABLE WORD
  64. * OVLCALL LOAD OVERLAY
  65. * XTRACE TRACE CALLS
  66. *
  67. * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION.
  68. *
  69. * W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY
  70. *CALL OPSIZE
  71. *
  72. * THIS OVERLAY IS CALLED BY HPPUT.
  73. *
  74.  #
  75. STOPIMS;
  76. *ENDIF
  77. #
  78.   EXTERNAL VARIABLES
  79. #
  80. XREF
  81. BEGIN
  82. PROC HUPDDAW; # UPDATE DATA AVAILABLE WORD #
  83. PROC OVLCALL; # LOAD OVERLAY #
  84. PROC XTRACE; # TRACE CALLS #
  85. LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
  86. END
  87.  
  88. #
  89.   INTERNAL VARIABLES
  90. #
  91. ITEM HDXFLAG B; # TRUE IF LST/HDX MESSAGE BEING PROCESSED #
  92. ITEM I I; # FOR LOOP VARIABLE #
  93.  
  94. #**********************************************************************#
  95. CONTROL IFEQ DEBUG,1;
  96. XTRACE("HLSTD") ;
  97. CONTROL FI;
  98. P<NWLENTRY> = WLADDR; # CURRENT WORKLIST ENTRY #
  99. P<SUPMSG> = WLADDR + AIPHSIZE + ABHSIZE;
  100. #
  101.   F I N D A C N B - A D D R E S S
  102. #
  103. P<ACB> = ACBADDR;
  104. P<ACNT> = ACBACNT[0];
  105.  
  106. # LOCATE LST MESSAGE #
  107. IF SFC[0] EQ HDX
  108. THEN # TURN ON HALF DUPLEX MODE #
  109. HDXFLAG = TRUE;
  110.  
  111. ELSE # TURN ON FULL DUPLEX MODE #
  112. HDXFLAG = FALSE;
  113.  
  114. IF LSTACN[0] NQ 0
  115. THEN # CHANGE DUPLEX MODE FOR SPECIFIC #
  116. BEGIN # CONNECTION #
  117. P<ACNB> = ACNTACNB[LSTACN[0] + ACNTHSIZE - ACNTMINACN[0]];
  118. IF P<ACNB> EQ 0 OR LSTACN[0]
  119. LS ACNTMINACN[0] OR LSTACN[0]
  120. GR ACNTHCN[0]
  121. THEN # ACNB NOT FOUND #
  122. BEGIN
  123. PARAMS1 = RLG"ACN";# ILLEGAL ACN #
  124. OVLNAME = HLGLERRP;
  125. OVLCALL; # LOAD PROGRAM INTO OVERLAY #
  126. GOTO HLSTDXX;
  127.  
  128. END
  129.  
  130. ACNBH[0] = HDXFLAG; # SET OR CLEAR HALF DUPLEX FLAG #
  131. IF NOT HDXFLAG # FULL DUPLEX MODE #
  132. THEN
  133. BEGIN # FULL DUPLEX #
  134. IF ACNBTLO[0]
  135. THEN # CONNECTION CURRENTLY IN TEMP LIST OFF #
  136. BEGIN
  137. ACNBTLO[0] = FALSE; # CLEAR TEMP LIST OFF CONDITION #
  138. HUPDDAW(P<ACB>,P<ACNB>,0,ACNBBLKSQ[0]);
  139. END
  140.  
  141. END # FULL DUPLEX #
  142. ELSE
  143. BEGIN # HALF DUPLEX #
  144. IF LSTDIS[0]
  145. THEN # CHECK INITIALLY LIST STATE FLAG #
  146. BEGIN # SET TLO #
  147. IF NOT ACNBTLO[0] # WAS TEMP LIST ON CONDITION #
  148. THEN
  149. BEGIN
  150. HUPDDAW(P<ACB>,P<ACNB>,0,-ACNBBLKSQ[0]);
  151. END
  152.  
  153. ACNBTLO[0] = TRUE ;
  154. END # SET TLO #
  155. ELSE
  156. BEGIN
  157. IF ACNBTLO[0]
  158. THEN # CONNECTION IN TEMP LIST OFF CONDITION #
  159. BEGIN
  160. ACNBTLO[0] = FALSE; # CLEAR TEMP LIST OFF CONDITION #
  161. HUPDDAW(P<ACB>,P<ACNB>,0,ACNBBLKSQ[0]); # UPDATE DELIVER#
  162. END
  163. END
  164. END # HALF DUPLEX #
  165. END
  166.  
  167. ELSE # CHANGE DUPLEX MODE ON ALL TERMINAL #
  168. BEGIN # APPLICATION CONNECTIONS #
  169. ATH[ACBAN[0]] = HDXFLAG;
  170. ATDIS[ACBAN[0]] = LSTDIS[0] ; # SET INITIAL LIST STATE FLAG #
  171.  
  172. # LOOP THROUGH ACTIVE CONNECTIONS #
  173.  
  174. FOR I = ACNTHSIZE STEP 1
  175. UNTIL ACNTHCN[0] + ACNTHSIZE - ACNTMINACN[0]
  176. DO
  177. BEGIN
  178. IF ACNTACNB[I] NQ 0
  179. THEN # ACTIVE CONNECTION #
  180. BEGIN
  181. P<ACNB> = ACNTACNB[I];
  182. ACNBH[0] = HDXFLAG; # SET OR CLEAR HALF DUPLEX FLAG#
  183. IF NOT HDXFLAG
  184. THEN # FULL DUPLEX MODE #
  185. BEGIN # FULL DUPLEX MODE #
  186. IF ACNBTLO[0]
  187. THEN # CONNECTION IN TEMP LIST OFF CONDITION #
  188. BEGIN
  189. ACNBTLO[0] = FALSE; # CLEAR TEMP LIST OFF FLAG #
  190. HUPDDAW(P<ACB>,P<ACNB>,0,ACNBBLKSQ[0]); # UPDATE DELIV#
  191. END
  192. END # FULL DUPLEX MODE #
  193. ELSE
  194. BEGIN # HALF DUPLEX MODE #
  195. IF LSTDIS[0] #CHECK INITIAL LIST STATE #
  196. THEN
  197. BEGIN
  198. HUPDDAW(P<ACB>,P<ACNB>,0,-ACNBBLKSQ[0]); # UPDATE DEL#
  199. ACNBTLO[0] = TRUE; # FLAG,IF SET, SET TLO FLAG #
  200. END
  201. ELSE
  202. BEGIN
  203. IF ACNBTLO[0]
  204. THEN # CONNECTION IN TEMP LIST OFF CONDITIO#
  205. BEGIN
  206. ACNBTLO[0] = FALSE; # CLEAR TEMP LIST OFF FLAG #
  207. HUPDDAW(P<ACB>,P<ACNB>,0,ACNBBLKSQ[0]); # UPDATE D#
  208. END
  209. END
  210. END # HALF DUPLEX MODE #
  211. END
  212.  
  213. END
  214.  
  215. END
  216.  
  217. HLSTDXX:
  218. GOTO RJMAIN;
  219. END # HLSTDX #
  220. TERM
cdc/nos2.source/nam5871/hlstdx.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator