*DECK HDCTRU
USETEXT ACB
USETEXT ACNB
USETEXT ACNT
USETEXT AT
USETEXT NIPDEF
USETEXT APPSTAT
USETEXT NWLNTRY
USETEXT OVERLAY
USETEXT PARAMS
USETEXT PT
USETEXT SUPMSG
PRGM HDCTRU; # PROCESS DC/TRU/R FROM APP #
*IF DEF,IMS
STARTIMS;
#
*1DC HDCTRU
*
* 1. PROC NAME AUTHOR DATE
* HDCTRU S. WATANABE 79/04/04
*
* 2. FUNCTIONAL DESCRIPTION.
* PROCESS DC/TRU/R SUPERVISORY MESSAGE FROM APPLICATION.
*
* 3. METHOD USED.
* VALIDATE DC/TRU/R SUPERVISORY MESSAGE.
* IF ACN IS NON-ZERO AND ACNB IS FOUND,
* DATA TRUNCATION FLAG IS SET IN THE ACNB.
* IF ACN IS ZERO,
* DATA TRUNCATION FLAG IS SET IN THE ACB
* AND IN ALL ITS ACTIVE ACNB-S.
*
* 4. ENTRY PARAMETERS.
* DCACN APPLICATION CONNECTION NUMBER
* ACBADDR ACB ADDRESS
* WLADDR WORKLIST ENTRY ADDRESS
*
* 5. EXIT PARAMETERS.
* NONE
*
* 6. COMDECKS CALLED AND SYMPL TEXTS USED.
* ACB ACNB APPSTAT AT NIPDEF
* ACNT OVERLAY PARAMS SUPMSG PT
*
* 7. ROUTINES AND OVERLAYS CALLED.
* HLGLERR OVL FORM LOGICAL ERROR MESSAGE
* OVLCALL LOAD AND EXECUTE OVERLAY
* XTRACE RECORD PROCESSOR CALLS
*
* 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION.
* NONE
*
* THIS PROGRAM IS A PRIMARY OVERLAY LOADED BY SUBROUTINE OVLCALL.
* WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO LOCATION RJMAIN
* TO RETURN TO THE CALLING PROGRAM.
*
* 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 OVLCALL; # LOAD OVERLAY #
PROC XTRACE; # TRACE CALLS #
LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
END
#
INTERNAL VARIABLES
#
ITEM FOUND U; # HOSTSIDE ACNB ADDRESS #
ITEM INDX; # LOOP VARIABLE #
#**********************************************************************#
BEGIN
CONTROL IFEQ DEBUG,1;
XTRACE("HDCTR") ;
CONTROL FI;
P<SUPMSG> = WLADDR + AIPHSIZE + ABHSIZE; # TEXT ADDRESS #
P<ACB> = ACBADDR;
P<ACNT> = ACBACNT[0];
IF DCACN[0] NQ 0 # ACN IS GIVEN #
THEN # LOCATE THE ACNB #
BEGIN
FOUND = 0; # ZERO FOUND ITEM #
IF DCACN[0] LQ ACNTHCN[0] AND DCACN[0] GQ ACNTMINACN[0]
THEN
BEGIN
P<ACNB> = ACNTACNB[DCACN[0] + ACNTHSIZE - ACNTMINACN[0]];
FOUND = P<ACNB>;
END
IF FOUND EQ 0 # NO ACNB WITH THIS ACN #
THEN
BEGIN
PARAMS1 = RLG"ACN";
OVLNAME = HLGLERRP; # SEND LOGICAL ERROR MSG #
OVLCALL;
END
ELSE # ACNB FOUND #
BEGIN
ACNBD[0] = TRUE ;
END
END
ELSE # NO ACN SPECIFIED #
BEGIN
ATT[ACBAN[0]] = TRUE;
FOR INDX = ACNTHSIZE STEP 1 UNTIL ACNTHCN[0] - ACNTMINACN[0]
+ ACNTHSIZE
DO
BEGIN
P<ACNB> = ACNTACNB[INDX];
IF P<ACNB> NQ 0 THEN
BEGIN
ACNBD[0] = TRUE;
END
END
END
GOTO RJMAIN;
END
TERM