User Tools

Site Tools


cdc:nos2.source:nam5871:kchange

KCHANGE

Table Of Contents

  • [00011] PRGM KCHANGE
  • [00021] PROC LOCLLCB
  • [00022] PROC MRELS
  • [00023] PROC OVLCALL
  • [00024] PROC XTRACE

Source Code

KCHANGE.txt
  1. *DECK KCHANGE
  2. USETEXT NIPDEF
  3. USETEXT AT
  4. USETEXT KDIS
  5. USETEXT KSTTAB
  6. USETEXT NBT
  7. USETEXT OVERLAY
  8. USETEXT PARAMS
  9. USETEXT PT
  10.  
  11. PRGM KCHANGE; # PROCESS K DISPLAY CHANGE #
  12.  
  13. STARTIMS;
  14. STOPIMS;
  15.  
  16. #
  17.   EXTERNAL REFERENCES
  18. #
  19. XREF
  20. BEGIN
  21. PROC LOCLLCB; # LOCATE LOGICAL LINK CONTROL BLOCK #
  22. PROC MRELS; # RELEASE BUFFER #
  23. PROC OVLCALL;
  24. PROC XTRACE; # TRACE CALL #
  25. LABEL RJMAIN;
  26. END
  27. #
  28.   LOCAL VARIABLES
  29. #
  30. ITEM TYPE; # STATUS DISPLAY BUFFER TYPE #
  31. ITEM INDEX; # INDUCTION VARIABLE, TABLE INDEX #
  32. ITEM J; # INDUCTION VARIABLE #
  33. ITEM NEXTKWL; # FWA OF NEXT KWL #
  34.  
  35. SWITCH ST$TYPE:KST # SWITCH FOR VALID STATUS DISPLAY BUFFER #
  36. LB$APP:APP, # APPLICATION ACB #
  37. LB$EST:EST, # EST #
  38. LB$LLK:LLK; # LOGICAL LINK LLCB #
  39.  
  40. CONTROL EJECT;
  41.  
  42. BEGIN # KCHANGE #
  43.  
  44. P<KWL> = LOC(KWLPTR[0]);
  45. NEXTKWL = KWL$NEXT[0]; # FWA OF FIRST KWL IN LIST #
  46.  
  47. IF KDST[0]
  48. THEN # IF STATUS DISPLAY IS STILL ON #
  49. BEGIN
  50. FOR J=J WHILE KWL$NEXT[0] NQ 0
  51. DO # PROCESS ALL KWL ENTRY(S) IN LIST #
  52. BEGIN
  53. P<KWL> = KWL$NEXT[0]; # CURRENT KWL ENTRY #
  54. TYPE = KWL$TYPE[0]; # BUFFER TYPE TO ADD/DELETE #
  55.  
  56. PARAMS5=FALSE;
  57. IF KWL$ID[0] EQ KADDIDVALUE
  58. THEN # ADD ENTRY TO STATUS DISPLAY #
  59. BEGIN
  60. GOTO ST$TYPE[TYPE]; # CASE ON STATUS DISPLAY BUFFER TYPE #
  61.  
  62. LB$APP: # COMPUTE ACB ADDRESS #
  63. INDEX = ATACBA[KWL$AN[0]];
  64. GOTO LB$CHANGE;
  65.  
  66. LB$EST: # COMPUTE NBT ENTRY INDEX #
  67. FOR INDEX=0 STEP NBTFETNO WHILE NBTHN[INDEX] NQ KWL$HN[0]
  68. AND INDEX LQ NBTMAXID
  69. DO # SEARCH NBT FOR MATCHING COUPLER NODE NUMBER #
  70. BEGIN
  71. END # INDEX = NBT ENTRY INDEX #
  72. GOTO LB$CHANGE1;
  73.  
  74. LB$LLK: # COMPUTE LLCB ADDRESS #
  75. LOCLLCB(KWL$HN[0],KWL$TN[0],INDEX);
  76. GOTO LB$CHANGE;
  77.  
  78. LB$CHANGE:
  79. IF INDEX EQ 0
  80. THEN # ACB OR LLCB NOT EXISTS #
  81. GOTO LB$END;
  82. LB$CHANGE1:
  83. PARAMS1=TYPE;
  84. PARAMS2=INDEX;
  85. OVLNAME=KADDP;
  86. OVLCALL;
  87. LB$END:
  88. END
  89.  
  90. ELSE # DELETE ENTRY FROM STATUS DISPLAY #
  91. BEGIN
  92. INDEX = KWL$KNDX[0]; # STATUS DISPLAY LINE INDEX #
  93. IF INDEX NQ 0
  94. THEN # STATUS DISPLAY LINE EXISTS #
  95. BEGIN
  96. PARAMS1=TYPE;
  97. PARAMS2=INDEX;
  98. OVLNAME=KDELP;
  99. OVLCALL;
  100. END
  101. END
  102. IF PARAMS5 THEN
  103. BEGIN
  104. OVLNAME=KOVDISP;
  105. OVLCALL;
  106. END
  107. END
  108. END
  109.  
  110. FOR INDEX=INDEX WHILE NEXTKWL NQ 0
  111. DO # RELEASE ALL KWL ON LIST #
  112. BEGIN
  113. P<KWL> = NEXTKWL;
  114. NEXTKWL = KWL$NEXT[0]; # NEXT KWL ENTRY #
  115. MRELS(P<KWL>); # RELEASE KWL #
  116. END
  117. KWLPTR[0] = 0; # CLEAR KWL POINTER, ALL KWL(S) PROCESSED #
  118.  
  119. GOTO RJMAIN;
  120. END # KCHANGE #
  121. TERM
cdc/nos2.source/nam5871/kchange.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator