*DECK HCHGICT 
USETEXT ACB 
USETEXT ACNB
USETEXT ACNT
USETEXT NCNB
USETEXT NIPDEF
USETEXT APPSTAT 
USETEXT AWLNTRY 
USETEXT DEQCOM
USETEXT OVERLAY 
USETEXT PARAMS
USETEXT SUPMSG
      PRGM HCHGICT;          # CHANGE INPUT CHARACTER TYPE FOR ACNB    #
  
 STARTIMS;
 #
*1DC  HCHGICT 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        HCHGICT             A. M. PRATT         75/10/10 
* 
*     2. FUNCTIONAL DESCRIPTION.
*        THIS ROUTINE IS RESPONSIBLE FOR CHANGING A ACNB-S INPUT
*        CHARACTER TYPE.  PROCESS A DC/CICT.
* 
*     3. METHOD USED. 
*        LOCATE THE ACNB.  IF NOT FOUND, THEN ISSUE ERR/LGL.
*        ELSE LOCATE THE NCNB.  VALIDATE THE APPLICATON 
*        CHARACTER TYPE.
*          DT = 5 (INTRA-HOST)  ACT = 1,2,3 
*          DT = 6 (INTER-HOST)  ACT =2,3
*          DT = 0 (T-A)         ACT = 2,3,4 
*        SET THE INPUT CHARACTER TYPE, SYNCHRONOUS COMMAND IN 
*        ASCII12 FLAG AND NO TRANSPARENT DATA FLAG
*        IN NCNB. 
* 
*     4. ENTRY PARAMETERS.
*          DCACN             (DATA CONTROL) APP CONNECTION NUMBER 
*          DCACT             (DATA CONTROL) APP CHARACTER TYPE
*          ACBADDR           CURRENT APPLICATION"S ACB
*          WLADDR            CURRENT WORKLIST ENTRY 
* 
*     5. EXIT PARAMETER.
*        NONE 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        ACB     ACNB     ACNT     APPSTAT     NCNB 
*        NIPDEF  OPSIZE  OVERLAY  PARAMS  SUPMSG
* 
*     7. ROUTINES CALLED. 
*          HLGLERR    OVL    REJECT MSG AND SEND LGL/ERR TO APPL
*          OVLCALL           LOAD AND EXECUTE OVERLAY 
*          XTRACE            TRACES CALLS 
* 
*     8. DAYFILE MESSAGES.  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 OVERLAY 
*CALL OPSIZE
* 
*        THIS OVERLAY IS CALLED BY HPPUT. 
* 
 #
 STOPIMS; 
# 
                    EXTERNAL VARIABLES
# 
  
      XREF PROC OVLCALL;     # LOAD AND EXECUTE OVERLAY                #
      XREF PROC XTRACE; 
      XREF LABEL RJMAIN;     # RETURN ADDRESS IN OVLCALL               #
  
# 
                    INTERNAL VARIABLES
# 
  
  
#**********************************************************************#
      BEGIN 
      CONTROL IFEQ DEBUG,1 ;
        XTRACE("HCHGI") ; 
      CONTROL FI; 
  
      P<SUPMSG> = WLADDR + HDRSIZE;    # TEXT ADDRESS                  #
  
# LOCATE THE ACNB # 
  
      P<ACB> = ACBADDR; 
      P<ACNT> = ACBACNT[0]; 
      P<ACNB> = ACNTACNB[DCACN[0] + ACNTHSIZE - ACNTMINACN[0]]; 
      IF P<ACNB> NQ 0 
      THEN
        BEGIN 
        P<NCNB> = ACNBNCNB[0];  # NCNB ADDRESS                         #
        IF P<NCNB> NQ 0 AND 
        (DCACT[0] LS CT60TRANS
        OR DCACT[0] GQ ACTMAX 
        OR (NCNBDT[0] EQ DT$INTE AND
           NOT (DCACT[0] EQ CT8ASCII OR DCACT[0] EQ CT12ASCII)) 
        OR (NCNBDT[0] EQ DT$INTA AND DCACT EQ CT6DISPLAY) 
        OR (NCNBID[0] EQ NCNBIDVALUE AND NOT NCNBAA[0]
           AND DCACT[0] EQ CT60TRANS))
        THEN
            # 
               DT = 5 INTRA HOST ACT MUST BE 1,2 OR 3 
               DT = 6 INTER HOST ACT MUST BE 2 OR 3 
               T-A CONNECTION ACT MUST BE 2,3 OR 4
            # 
          BEGIN 
          PARAMS1 = RLG"IA";  # ILLEGAL ACT                            #
          GOTO ERREXIT; 
          END 
  
#     STORE NEW ACT IN ACNB                                            #
  
        ACNBICT = DCACT[0];  # NEW INPUT CHARACTER TYPE                #
        ACNBSCT[0] = DCSCT[0] ;          # SYN. CHAR TYPE            #
        ACNBNXP[0] = DCNXP[0] ;          # NO TRANS. DATA INDICATOR  #
        GOTO RJMAIN;  # RETURN TO CALLING PROGRAM                      #
        END 
      ELSE
        PARAMS1 = RLG"ACN";  # REASON CODE - BAD ACN                   #
  
ERREXIT:  
      OVLNAME = HLGLERRP;    # SEND LOGICAL ERROR MSG TO APPL          #
      OVLCALL;
  
      GOTO RJMAIN;           # RETURN TO CALLING PROGRAM               #
  
      END 
TERM
