*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 = 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=P; 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 = 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=BUF+BLKHSIZE+ABHSIZE; P = 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 = ACBADDR; IF PARAMS6 EQ ACBANAME[0] THEN KAPNO = ACBAN[0]; END END END END END END RETURN; END END # MAIN # TERM