*DECK KAPIGP
USETEXT NIPDEF
USETEXT PARAMS
USETEXT AHEADER
USETEXT PT
USETEXT AT
USETEXT ACB
USETEXT KDIS
USETEXT KHDRX
USETEXT DISTAIL
USETEXT SUPMSG
PRGM KAPIGP ;
STARTIMS;
#
*1DC KAPIGP
*
* 1. PROC NAME AUTHOR DATE
* KAPIGP A. BEN-ARTZI 82/03/01
*
* 2. FUNCTIONAL DESCRIPTION
* PROCESS K-DISPLAY "AP" AND "IG" COMMAND.
*
* 3. METHOD USED
* FOR "AP" COMMAND - FORMAT A HOP/START
* FOR "IG" COMMAND - FORMAT A HOP/IG
*
* 4. ENTRY PARAMETERS
* PARAMS2 - INDICATE TYPE OF COMMAND
* PARAMS6 - APPLICATION NAME FROM COMMAND IF SPECIFIED
*
* 5. EXIT PARAMETERS
* PARAMS7 - ERROR CODE
*
* 6. COMDECKS CALLED AND SYMPL TEXTS USED
* NIPDEF PARAMS AHEADER
* PT AT ACB
* KDIS DISTAIL SUPMSG
* OSSIZE
*
* 7. ROUTINES AND OVERLAYS CALLED
* BLINK - LINK MESSAGE ON DATA RING
* KPUT - K-DISPLAY DYNAMIC UPDATE INTERFACE
* MGETS - ALLOCATE BUFFER
* OSCHAPP - SCHEDULE APPLICATION
* XTRACE - TRACE PROCEDURE CALL
*
* 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
* THIS IS A SECONDARY OVERLAY CALLED BY KPTYPIN.
* W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY
*CALL OSSIZE
#
STOPIMS;
#
EXTERNAL REFERENCES
#
XREF
BEGIN
PROC MGETS ;
PROC BLINK ;
PROC KPUT ;
PROC OSCHAPP;
PROC XTRACE ;
LABEL RJMAIN;
END
#
INTERNAL VARIABLES
#
ITEM ACBADDR ;
ITEM BUFADDR ;
ITEM KAPNO ;
ITEM KWHERE ;
ITEM KINDEX ;
SWITCH KN DM,KA,KB,KC,KD,KE ;
BASED ARRAY KALTNR [1:1] S(1) ;
BEGIN
ITEM KALTN C(0,0,7) ;
END
BASED ARRAY HOPBASE S(1);
BEGIN
ITEM HOPLEFT U(0,36,12); # LEFT PAGE SIZE FIELD OF HOP/START #
ITEM HOPRIGHT U(0,48,12); # RIGHT PAGE SIZE FIELD OF HOP/START#
END
BEGIN
CONTROL IFEQ DEBUG,1 ;
XTRACE("KAPIG") ;
CONTROL FI ;
BEGIN
PARAMS7 = 0 ; # INITIAL NO ERROR STATE #
IF PARAMS6 EQ " "
THEN
BEGIN
IF KDNAL[0] EQ 0
THEN
BEGIN
PARAMS7 = 1 ;
GOTO KEXIT ;
END
ELSE
BEGIN
PARAMS6 = KAPALT1[0];
KDALAN1[0]=KDALAN2[0];
KDALAN2[0]=KDALAN3[0];
KDALAN3[0]=KDALAN4[0];
KDALAN4[0]=KDALAN5[0];
KDALAN5[0]=0;
KDNAL[0] = KDNAL[0] - 1;
KAPALT1[0]=KAPALT2[0];
KAPALT2[0]=KAPALT3[0];
KAPALT3[0]=KAPALT4[0];
KAPALT4[0]=KAPALT5[0];
KAPALT5[0]=" ";
END
END
ELSE
BEGIN
# NOW CHECK FOR THIS NAME IN ALERT Q LISTING #
KWHERE = 0;
P<KALTNR> = LOC(KAPALT1[0]);
FOR KINDEX=1 STEP 1 WHILE KWHERE EQ 0 AND KINDEX LQ KMAXALT DO
BEGIN
IF KALTN[KINDEX] EQ PARAMS6
THEN
KWHERE = KINDEX ;
END
#
WE HAVE NOW IN KWHERE THE SEQ NO OF ALERT (OR 0)
#
IF KWHERE NQ 0 # START SHIFTING THEM ALL #
THEN
BEGIN
FOR KINDEX = KWHERE STEP 1 UNTIL KMAXALT-1 DO
BEGIN
KALTN[KINDEX] = KALTN[KINDEX+1];
END
KAPALT5[0] = " " ;
GOTO KN[KWHERE];
DM: ; # DUMMY ENTRY #
KA: KDALAN1[0] = KDALAN2[0];
KB: KDALAN2[0] = KDALAN3[0];
KC: KDALAN3[0] = KDALAN4[0];
KD: KDALAN4[0] = KDALAN5[0];
KE: KDALAN5[0] = 0 ;
KDNAL[0] = KDNAL[0] -1;
END
END
#
NOW LET S GET APPLICATION NUMBER IF ANY
#
KFACB;
IF KAPNO NQ 0
THEN
BEGIN
IF NOT ATK[KAPNO] # APPLICATION NOT ALLOWED FOR K-DISPLAY#
THEN
BEGIN
PARAMS7 = 2 ;
GOTO KEXIT ;
END
ELSE
BEGIN
IF PARAMS2 EQ 0 # THIS IS A -AP- TYPE-IN #
THEN # WE HAVE THE APPLICATION WE WANT START WORKING #
# WITH #
BEGIN
PARAMS4 = KAPNO ;
ATI[KAPNO]=FALSE ;# IN CASE OF A FORMER IGNORE #
#
BUILD THE HOP/START BLOCK
#
KGET(HOPSTRT,LHOPSTR,BUFADDR) ;
P<HOPBASE>=P<SUPMSG>;
HOPLEFT=KLSIZE-KERRL;
HOPRIGHT=KRSIZE;
GOTO SEND ;
END
ELSE # WE SEND AN IGNORE TO APPL #
BEGIN
#
BUILD THE HOP/IG BLOCK
#
KGET(HOPIG,LHOPIG,BUFADDR) ;
#
SET THE IGNORE FLAG IN AT ENTRY
#
ATI[KAPNO] = TRUE ;
P<ACB> = ATACBA[KAPNO];
IF KDST[0]
AND ACBKNDX[0] NQ 0
AND ACBKNDX[0] GQ KDAPPST[0]
AND ACBKNDX[0] LQ KDAPPND[0]
THEN
BEGIN
KPUT(KHDRNP[0],ACBKNDX[0]-KDAPPST[0],KPAPI,"Y") ;
END
GOTO SEND;
END
END
END
ELSE # NO AP OR IG COMMAND WHEN APPLICATION IS NOT ON #
BEGIN
PARAMS7 = 3 ;
GOTO KEXIT ;
END
END
SEND: BEGIN
BLINK(BUFADDR,ATACBA[KAPNO]) ;
OSCHAPP(ATACBA[KAPNO]);
END
KEXIT: BEGIN
KBUF1[0] = 0 ;
GOTO RJMAIN ;
END
#
--------------------
#
PROC KGET(KCODE,KL,BUF);
ITEM KCODE U;
ITEM KL U;
ITEM BUF U;
BEGIN
MGETS(KL+BLKHSIZE+ABHSIZE,BUF,TRUE);
P<SUPMSG>=BUF+BLKHSIZE+ABHSIZE;
P<AHEADER> = BUF+BLKHSIZE;# BASE APPLICATION HEADER #
PFCSFC[0] = KCODE ; # SET FUNCTION CODE #
# #
ABHTLC[0]=KL; # LENGTH OF MESSAGE #
ABHABT[0]=APPCMD; # THIS IS A COMMAND BLOCK #
ABHACT[0]=CT60TRANS; #CHARACTER TYPE #
ABHABN[0]=0;
ABHADR[0]=0;
RETURN;
END
#
-----------------------
#
PROC KFACB;
BEGIN
#
LET-S GET ACB AND APPLICATION NUMBER
#
BEGIN
KAPNO=0;
IF PARAMS6 EQ "CS"
THEN
BEGIN
KAPNO = PROCAN[CSORD];
END
ELSE
BEGIN
IF PARAMS6 EQ "NVF"
THEN
BEGIN
KAPNO=NVFAN ;
END
ELSE
BEGIN
IF PARAMS6 EQ "NS"
THEN
BEGIN
KAPNO = PROCAN[NSORD];
END
ELSE
BEGIN # NOT CS NS OR NVF. TRY LOOK AT ALL ACB-S #
FOR KINDEX = NVFAN+1 STEP 1 WHILE (KINDEX LQ ATHAN[0] AND
KAPNO EQ 0) DO
BEGIN
ACBADDR = ATACBA[KINDEX];
IF ( ACBADDR NQ 0 )
THEN
BEGIN
P<ACB> = ACBADDR;
IF PARAMS6 EQ ACBANAME[0]
THEN
KAPNO = ACBAN[0];
END
END
END
END
END
END
RETURN;
END
END # MAIN #
TERM