cdc:nos2.source:nam5871:hlstdx
Table of Contents
HLSTDX
Table Of Contents
- [00012] PRGM HLSTDX
- [00082] PROC HUPDDAW
- [00083] PROC OVLCALL
- [00084] PROC XTRACE
Source Code
- HLSTDX.txt
- *DECK HLSTDX
- USETEXT NIPDEF
- USETEXT ACB
- USETEXT ACNB
- USETEXT ACNT
- USETEXT APPSTAT
- USETEXT AT
- USETEXT NWLNTRY
- USETEXT OVERLAY
- USETEXT PARAMS
- USETEXT SUPMSG
- PRGM HLSTDX; # PROCESS A HALF/FULL DUPLEX MODE #
- BEGIN
- *IF DEF,IMS
- STARTIMS;
- #
- *1DC HLSTDX
- *
- * 1.PROC NAME AUTHOR DATE
- * HLSTDX S.KRULEVITCH 79/02/28
- *
- * 2. FUNCTIONAL DESCRIPTION.
- * PROCESS LST/HDX AND LST/FDX SUPERVISORY MESSAGES TO ALLOW
- * SELECTION/DESELECTION OF HALF DUPLEX MODE ON/ FULL DUPLEX MODE
- *
- * 3. METHOD USED.
- * DETERMINE OF LST/FDX OR LST/HDX
- * NONZERO ACN:
- * FOR ALL ACTIVE CONNECTIONS (IF ACN IS ZERO) OR
- * FOR A SPECIFIC CONNECTION (IF ACN IS NON-ZERO)
- * DO THE FOLLOWING
- * UPDATE THE HALF DUPLEX MODE FLAG
- * IF FULL DUPLEX - CLEAR THE TEMPORARY LIST OFF FLAG
- * IF HALF DUPLEX AND THE INITIAL STATE OF THE
- * CONNECTION IS DISABLED - SET THE TEMPORARY
- * LIST OFF FLAG (ELSE CLEAR THE TLO FLAG).
- * LOCATE ACNB ON NONZERO CONNECTION
- * IF ACNB NOT FOUND, RETURN A LOGICAL ERROR
- * IF ACNB FOUND
- * CLEAR OR SET HALF DUPLEX MODE FLAG
- * IF LST/FDX ALSO CLEAR TEMPORARY LIST FLAG
- * ZERO ACN:
- * CLEAR OR SET HALF DUPLEX FLAG IN ACB
- * FOR EACH ACTIVE CONNECTION"S ACNB
- * CLEAR OR SET HALF DUPLEX MODE FLAG
- * IF LST/FDX ALSO CLEAR TEMPORARY LIST OFF FLAG
- *
- * 4. ENTRY PARAMETERS.
- * ACBADDR CURRENT ACB ADDRESS
- * WLADDR CURRENT WORKLIST ENTRY
- *
- * 5. EXIT PARAMETERS.
- * ACNBH HALF DUPLEX MODE FLAG
- * ACNBTLO TEMPORARY LIST OFF FLAG
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
- * ACB ACNB ACNT APPSTAT AT
- * NIPDEF NWLNTRY OVERLAY PARAMS PT
- * SUPMSG
- *
- * 7. ROUTINES AND OVERLAYS CALLED
- * HLGLERR OVL ISSUE LOGICAL ERROR
- * HUPDDAW UPDATE DATA AVAILABLE WORD
- * OVLCALL LOAD OVERLAY
- * XTRACE TRACE CALLS
- *
- * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION.
- *
- * W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY
- *CALL OPSIZE
- *
- * THIS OVERLAY IS CALLED BY HPPUT.
- *
- #
- STOPIMS;
- *ENDIF
- #
- EXTERNAL VARIABLES
- #
- XREF
- BEGIN
- PROC HUPDDAW; # UPDATE DATA AVAILABLE WORD #
- PROC OVLCALL; # LOAD OVERLAY #
- PROC XTRACE; # TRACE CALLS #
- LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
- END
- #
- INTERNAL VARIABLES
- #
- ITEM HDXFLAG B; # TRUE IF LST/HDX MESSAGE BEING PROCESSED #
- ITEM I I; # FOR LOOP VARIABLE #
- #**********************************************************************#
- CONTROL IFEQ DEBUG,1;
- XTRACE("HLSTD") ;
- CONTROL FI;
- P<NWLENTRY> = WLADDR; # CURRENT WORKLIST ENTRY #
- P<SUPMSG> = WLADDR + AIPHSIZE + ABHSIZE;
- #
- F I N D A C N B - A D D R E S S
- #
- P<ACB> = ACBADDR;
- P<ACNT> = ACBACNT[0];
- # LOCATE LST MESSAGE #
- IF SFC[0] EQ HDX
- THEN # TURN ON HALF DUPLEX MODE #
- HDXFLAG = TRUE;
- ELSE # TURN ON FULL DUPLEX MODE #
- HDXFLAG = FALSE;
- IF LSTACN[0] NQ 0
- THEN # CHANGE DUPLEX MODE FOR SPECIFIC #
- BEGIN # CONNECTION #
- P<ACNB> = ACNTACNB[LSTACN[0] + ACNTHSIZE - ACNTMINACN[0]];
- IF P<ACNB> EQ 0 OR LSTACN[0]
- LS ACNTMINACN[0] OR LSTACN[0]
- GR ACNTHCN[0]
- THEN # ACNB NOT FOUND #
- BEGIN
- PARAMS1 = RLG"ACN";# ILLEGAL ACN #
- OVLNAME = HLGLERRP;
- OVLCALL; # LOAD PROGRAM INTO OVERLAY #
- GOTO HLSTDXX;
- END
- ACNBH[0] = HDXFLAG; # SET OR CLEAR HALF DUPLEX FLAG #
- IF NOT HDXFLAG # FULL DUPLEX MODE #
- THEN
- BEGIN # FULL DUPLEX #
- IF ACNBTLO[0]
- THEN # CONNECTION CURRENTLY IN TEMP LIST OFF #
- BEGIN
- ACNBTLO[0] = FALSE; # CLEAR TEMP LIST OFF CONDITION #
- HUPDDAW(P<ACB>,P<ACNB>,0,ACNBBLKSQ[0]);
- END
- END # FULL DUPLEX #
- ELSE
- BEGIN # HALF DUPLEX #
- IF LSTDIS[0]
- THEN # CHECK INITIALLY LIST STATE FLAG #
- BEGIN # SET TLO #
- IF NOT ACNBTLO[0] # WAS TEMP LIST ON CONDITION #
- THEN
- BEGIN
- HUPDDAW(P<ACB>,P<ACNB>,0,-ACNBBLKSQ[0]);
- END
- ACNBTLO[0] = TRUE ;
- END # SET TLO #
- ELSE
- BEGIN
- IF ACNBTLO[0]
- THEN # CONNECTION IN TEMP LIST OFF CONDITION #
- BEGIN
- ACNBTLO[0] = FALSE; # CLEAR TEMP LIST OFF CONDITION #
- HUPDDAW(P<ACB>,P<ACNB>,0,ACNBBLKSQ[0]); # UPDATE DELIVER#
- END
- END
- END # HALF DUPLEX #
- END
- ELSE # CHANGE DUPLEX MODE ON ALL TERMINAL #
- BEGIN # APPLICATION CONNECTIONS #
- ATH[ACBAN[0]] = HDXFLAG;
- ATDIS[ACBAN[0]] = LSTDIS[0] ; # SET INITIAL LIST STATE FLAG #
- # LOOP THROUGH ACTIVE CONNECTIONS #
- FOR I = ACNTHSIZE STEP 1
- UNTIL ACNTHCN[0] + ACNTHSIZE - ACNTMINACN[0]
- DO
- BEGIN
- IF ACNTACNB[I] NQ 0
- THEN # ACTIVE CONNECTION #
- BEGIN
- P<ACNB> = ACNTACNB[I];
- ACNBH[0] = HDXFLAG; # SET OR CLEAR HALF DUPLEX FLAG#
- IF NOT HDXFLAG
- THEN # FULL DUPLEX MODE #
- BEGIN # FULL DUPLEX MODE #
- IF ACNBTLO[0]
- THEN # CONNECTION IN TEMP LIST OFF CONDITION #
- BEGIN
- ACNBTLO[0] = FALSE; # CLEAR TEMP LIST OFF FLAG #
- HUPDDAW(P<ACB>,P<ACNB>,0,ACNBBLKSQ[0]); # UPDATE DELIV#
- END
- END # FULL DUPLEX MODE #
- ELSE
- BEGIN # HALF DUPLEX MODE #
- IF LSTDIS[0] #CHECK INITIAL LIST STATE #
- THEN
- BEGIN
- HUPDDAW(P<ACB>,P<ACNB>,0,-ACNBBLKSQ[0]); # UPDATE DEL#
- ACNBTLO[0] = TRUE; # FLAG,IF SET, SET TLO FLAG #
- END
- ELSE
- BEGIN
- IF ACNBTLO[0]
- THEN # CONNECTION IN TEMP LIST OFF CONDITIO#
- BEGIN
- ACNBTLO[0] = FALSE; # CLEAR TEMP LIST OFF FLAG #
- HUPDDAW(P<ACB>,P<ACNB>,0,ACNBBLKSQ[0]); # UPDATE D#
- END
- END
- END # HALF DUPLEX MODE #
- END
- END
- END
- HLSTDXX:
- GOTO RJMAIN;
- END # HLSTDX #
- TERM
cdc/nos2.source/nam5871/hlstdx.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator