cdc:nos2.source:nam5871:kptypin
Table of Contents
KPTYPIN
Table Of Contents
- [00012] PRGM KPTYPIN
- [00073] PROC OMSG
- [00074] PROC OVLCALL
- [00075] PROC XTRACE
Source Code
- KPTYPIN.txt
- *DECK KPTYPIN
- USETEXT NIPDEF
- USETEXT PARAMP
- USETEXT PARAMS
- USETEXT DRHDR
- USETEXT FREETAB
- USETEXT OVERLAY
- USETEXT KDIS
- USETEXT DISTAIL
- USETEXT KINITBF
- USETEXT SUPMSG
- PRGM KPTYPIN; # PROCESS K DISPLAY TYPE INS #
- STARTIMS;
- #
- *1DC KPTYPIN
- *
- * 1. PROC NAME AUTHOR DATE
- * KPTYPIN A. BEN-ARTZI 81/11/09
- *
- * 2. FUNCTIONAL DESCRIPTION.
- *
- * PROCESS ALL OPERATOR TYP-INS TO NAM-S K-DISPLAY
- *
- * 3. METHOD USED.
- *
- * GET THE INPUT KEY-WORD FROM THE TYPE-IN BUFFER. TEST IT AND
- * BRANCH TO THE APPROPRIATE SECTION TO EXECUTE THE COMMAND.
- * WHEN EVER NECESSARY BUILD A DATA BLOCK AND USE BLINK TO SEND IT
- * TO THE APPLICATION.
- *
- * SPECIAL MODULES ARE FOR STATUS DISPLAY AND FOR FL CHANGES.
- *
- * 4. ENTRY PARAMETERS.
- * NONE
- *
- *
- * 5. EXIT PARAMETERS.
- * PARAMP1 - FLAG TO CALL KDSTIN
- *
- *
- * 6. COMDECKS CALLED AND SYMPL TEXT USED.
- *
- * NIPDEF OVERLAY KDIS DISTAIL
- * KINITBF PARAMP PARAMS
- *
- * 7. ROUTINES AND OVERLAYS CALLED.
- *
- * OVLCALL LOAD AND EXECUTE OVERLAY
- * OMSG ISSUE DAYFILE MESSAGE
- * KPCLNUP OVL K-DISPLAY CLEAN-UP
- * KAPPMOD OVL PROCESS K-DISPLAY APPLICATION MODE COMMANDS
- * KAPIGP OVL PROCESS "AP" AND "IG" COMMANDS
- * KSTPAGE OVL PROCESS STATUS DISPLAY PAGING
- * KNAMMOD OVL PROCESS K-DISPLAY NAM MODE COMMANDS
- * KNAMDFL OVL PROCESS FIELD LENGTH K-DISPLAY COMMANDS
- * XTRACE RECORD PROCESSOR CALLS
- *
- *
- * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
- * THIS PRIMARY OVERLAY IS CALLED BY XEXEC.
- * W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY
- *CALL OPSIZE
- *
- *
- *
- #
- STOPIMS;
- #
- EXTERNAL VARIABLES
- #
- XREF
- BEGIN
- PROC OMSG; # DAYFILE MESSAGE #
- PROC OVLCALL; # LOAD OVERLAY #
- PROC XTRACE; # TRACE ROUTINE CALL #
- LABEL RJMAIN;
- END
- #
- LOCAL DEFINITIONS
- #
- DEF CHAR$COMMA # "," #;
- DEF CHAR$EQUAL # "=" #;
- DEF CHAR$PERIOD # "." #;
- DEF CHAR$BLANK # " " #;
- DEF CHAR$STAR # "*" #;
- DEF MAX$KDIS #40 #; # MAX CHARACTERS TO DISPLAY TYPE IN #
- #
- INTERNAL VARIABLES
- #
- ITEM CHRR; # SINGLE CHARACTER #
- ITEM CNT; # TOKEN TABLE INDEX #
- ITEM COUNT; # TOKEN CHARACTER COUNT #
- ITEM I; # INDUCTION VARIABLE #
- ITEM INDEX; # INDEX VALUE #
- ITEM J; # INDUCTION VARIABLE #
- ITEM KCHARS; # CHARACTER COUNT OF TYPE-INS #
- ITEM KRC; # ERROR REASON CODE FOR TYPE-IN #
- ITEM TC; # TOKEN COUNT #
- DEF L$TOKENTAB # 25#; # SIZE OF TOKEN TABLE #
- ARRAY TOKENTAB [1:L$TOKENTAB] S(1);
- BEGIN # TABLE OF NAM K DISPLAY COMMAND TOKENS/SEPARATOR #
- ITEM TT$WORD C(00,00,10); # WHOLE WORD #
- ITEM TT$TOKEN C(00,00,08); # TOKEN SEPARATOR #
- ITEM TT$ATOKEN C(00,00,07); # TOKEN ONLY #
- ITEM TT$SEP C(00,42,01); # SEPARATOR #
- END
- DEF MAX$KINPUT # 4 #; # MAX WORD COUNT - 1 FOR TYPE-IN #
- BASED ARRAY KDIS$INPUT [0:MAX$KINPUT] S(1);
- BEGIN
- ITEM KI$WORD C(00,00,10); # TYPE-IN WORD #
- END
- BASED ARRAY KARRAY [0:0] S(1);
- BEGIN
- ITEM KAWRD C(00,00,10);
- END
- DEF MAX$NAMCMDS # 24 #; # MAXIMUM NAM COMMANDS ALLOWED #
- ARRAY NAMCMDVERB [0:MAX$NAMCMDS] S(1);
- BEGIN # VALID NAM COMMAND VERB TABLE #
- ITEM NC$WORD C(00,00,10); # WHOLE WORD #
- ITEM NC$KEYWORD C(00,00,08) = [ # VALID COMMAND KEYWORDS #
- "ST ",
- "AP =",
- "AP ",
- "END ",
- "IG =",
- "IG ",
- "+ ",
- "- ",
- "* ",
- "/ ",
- "DB =",
- "DE =",
- "DU =",
- "FL =",
- "LE =",
- "RS =",
- "LB =",
- "LR =",
- "MO =",
- "SEND ",
- "TB =",
- "TE =",
- "( ",
- "HELP ",
- 0,
- ];
- ITEM NC$TOKENCT U(00,48,06) = [ # TOKEN COUNT ALLOWED FOR CMD #
- 1,2,1,1,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,2,2,1,1,0
- ];
- ITEM NC$CMDORD S:NCT(00,54,06) = [ # CORR COMMAND ORDINAL #
- S"CMD$ST",
- S"CMD$AP",
- S"CMD$AP",
- S"CMD$END",
- S"CMD$IG",
- S"CMD$IG",
- S"CMD$PFORWD",
- S"CMD$PBACK",
- S"CMD$IGNORE",
- S"CMD$IGNORE",
- S"CMD$DB",
- S"CMD$DE",
- S"CMD$DU",
- S"CMD$FL",
- S"CMD$LE",
- S"CMD$RS",
- S"CMD$LB",
- S"CMD$LR",
- S"CMD$MO",
- S"CMD$SEND",
- S"CMD$TB",
- S"CMD$TE",
- S"CMD$RFORWD",
- S"CMD$HELP",
- S"CMD$ERROR",
- ];
- END
- SWITCH NAMCMDCASE:NCT # SWITCH FOR VALID NAM COMMANDS #
- LB$ST:CMD$ST,
- LB$AP:CMD$AP,
- LB$END:CMD$END,
- LB$IG:CMD$IG,
- LB$EXIT:CMD$IGNORE,
- LB$PF:CMD$PFORWD,
- LB$PB:CMD$PBACK,
- LB$DB:CMD$DB,
- LB$DE:CMD$DE,
- LB$DU:CMD$DU,
- LB$LE:CMD$LE,
- LB$RS:CMD$RS,
- LB$LB:CMD$LB,
- LB$LR:CMD$LR,
- LB$FL:CMD$FL,
- LB$MO:CMD$MO,
- LB$SEND:CMD$SEND,
- LB$TB:CMD$TB,
- LB$TE:CMD$TE,
- LB$RPF:CMD$RFORWD,
- LB$HELP:CMD$HELP,
- LB$ERR:CMD$ERROR;
- CONTROL EJECT;
- BEGIN # KPTYPIN #
- CONTROL IFEQ DEBUG,1;
- XTRACE("KPTYP"); # TRACE CALL #
- CONTROL FI;
- PARAMP1 = 0;
- KREPEAT[0] = CHAR$BLANK;
- KRC = 0;
- #
- COMPUTE CHARACTER COUNT OF K DISPLAY TYPE-IN
- #
- P<KDIS$INPUT> = LOC(KBUF1[0]); # FWA OF TYPE-IN #
- FOR I=MAX$KINPUT STEP -1 WHILE I GQ 0
- AND KI$WORD[I] EQ 0
- DO # GET LAST WORD OF TYPE-IN #
- BEGIN
- END
- FOR J=0 STEP 1 WHILE J LS WC
- AND B<J*CL,CL>KI$WORD[I] NQ 0
- DO # GET LAST CHARACTER OF TYPE-IN #
- BEGIN
- END
- KCHARS = I*10 + J; # CHARACTER COUNT OF TYPE-IN #
- #
- DISPLAY K DISPLAY TYPE INS
- #
- P<KARRAY> = LOC(KBFD1[0]); # FWA OF DISPLAY #
- FOR I=0 STEP 1 UNTIL 3
- DO # BLANK-FILL DISPLAY BUFFER #
- KAWRD[I] = CHAR$BLANK;
- FOR I=0 STEP 1 WHILE I LS KCHARS
- AND I LS MAX$KDIS
- DO # DISPLAY UP TO 40 CHARACTERS OF TYPE-INS #
- BEGIN
- INDEX = I/10; # WORD INDEX #
- J = I-INDEX*10;
- C<J>KAWRD[INDEX] = C<J>KI$WORD[INDEX];
- END
- #
- APPLCATION MODE PROCESSING
- #
- IF KDAM[0]
- THEN
- BEGIN
- IF C<0>KBUF[0] EQ CHAR$STAR
- AND (KCHARS EQ 1
- OR (KCHARS EQ 2
- AND C<1>KBUF[0] EQ CHAR$PERIOD))
- THEN # TERMINATE APPLCATION MODE #
- OVLNAME = KPCLNUPP;
- ELSE # PROCESS APPLICATION K DISPLAY COMMAND #
- BEGIN
- PARAMS1 = KCHARS; # CHARACTER COUNT OF COMMAND #
- OVLNAME = KAPPMODP;
- END
- OVLCALL;
- END
- #
- NAM MODE PROCESSING
- #
- ELSE
- BEGIN
- IF KDORIG[0] THEN # FIND THE ORIGINAL BUFFER (HAS ERROR LINE) #
- P<KINITBF> = KDBP[0];
- ELSE
- P<KINITBF> = KORIGFP[0];
- P<KINITBF>=P<KINITBF>+BLKHSIZE+KHDRSIZE;
- CNT = KLSIZE-KERRL-2;
- KERROR1[CNT] = CHAR$BLANK;
- KERROR1[CNT+1] = CHAR$BLANK;
- KERROR1[CNT+2] = CHAR$BLANK;
- KERROR1[CNT+3] = CHAR$BLANK;
- KERROR2[CNT+4] = CHAR$BLANK;
- KREADY[KLSIZE-2] = CHAR$BLANK; # CLEAR READY.. PROMPT #
- P<KARRAY> = LOC(KDMES); # FWA OF TYPE IN COMMAND #
- OMSG(KARRAY,0); # LOG IN NETWORK LOG FILE - NIP DAYFILE #
- #
- TOKENIZE K DISPLAY TYPE INS
- #
- TC = 0; # INITIALIZE TOKEN COUNT #
- CNT = 1; # INITIALIZE TOKEN TABLE INDEX #
- COUNT = 0; # INITIALIZE CHARACTER COUNT OF TOKEN #
- FOR I=1 STEP 1 UNTIL L$TOKENTAB
- DO # INITIALIZE TOKEN TABLE #
- TT$WORD[I] = CHAR$BLANK; # BLANK-FILLED #
- FOR I=0 STEP 1 WHILE I LS KCHARS
- AND KRC EQ 0 # NO ERROR OCCURRED #
- DO # UNPACK COMMAND TEXT INTO TOKENS/SEPARATOR #
- BEGIN
- INDEX = I/10; # WORD INDEX OF COMMAND TEXT #
- J = I - INDEX*10; # CHARACTER POSITION #
- CHRR = C<J>KI$WORD[INDEX]; # CURRENT CHARACTER #
- IF CHRR EQ CHAR$COMMA
- OR CHRR EQ CHAR$EQUAL
- THEN # LEGAL SEPARATOR #
- BEGIN
- IF TT$WORD[CNT] NQ CHAR$BLANK
- THEN # TOKEN EXISTS #
- BEGIN
- IF CHRR EQ CHAR$EQUAL
- THEN # STORE EQUAL ONLY IN TOKEN TABLE #
- TT$SEP[CNT] = CHAR$EQUAL;
- COUNT = 0; # RESET TOKEN CHARACTER COUNT #
- CNT = CNT + 1; # INCREMENT TOKEN TABLE INDEX #
- TC = TC + 1; # INCREMENT TOKEN COUNT #
- END
- ELSE # TWO SEPARATORS IN A ROW, ERROR #
- KRC = 4; # SYNTAX ERROR, UNRECOGNIZED COMMAND #
- END
- ELSE
- BEGIN
- IF CHRR EQ CHAR$PERIOD
- THEN # ITS A PERIOD - TERMINATOR #
- I = KCHARS; # TERMINATE UNPACKING COMMAND #
- ELSE # ASSEMBLE CHARACTER INTO TOKEN #
- BEGIN
- IF CNT LQ L$TOKENTAB
- THEN # COMMAND WITHIN TOKEN TABLE SIZE #
- BEGIN
- C<COUNT>TT$WORD[CNT] = CHRR;
- COUNT = COUNT + 1; # INCREMENT TOKEN CHARACTER COUNT #
- IF COUNT GQ 10
- THEN # RESUME TOKEN ASSEMBLY IN NEXT WORD #
- BEGIN
- COUNT = 0;
- CNT = CNT + 1;
- END
- END
- END
- END
- END # END FOR LOOP #
- IF KRC EQ 0
- THEN # NO ERROR OCCURRED #
- #
- RECOGNIZE NAM K DISPLAY COMMAND
- #
- BEGIN
- TC = TC + 1; # TOKEN COUNT #
- NC$TOKENCT[MAX$NAMCMDS] = TC; # FORCE TOKEN COUNT MATCH #
- NC$KEYWORD[MAX$NAMCMDS] = TT$TOKEN[1]; # FORCE KEYWORD MATCH #
- FOR I=0 STEP 1 WHILE NC$KEYWORD[I] NQ TT$TOKEN[1]
- DO # NO KEYWORD MATCH #
- BEGIN
- END
- INDEX = NC$CMDORD[I]; # COMMAND ORDINAL #
- IF TC NQ NC$TOKENCT[I]
- THEN # TOKEN COUNT MISMATCH #
- KRC = 4; # SYNTAX ERROR, UNRECOGNIZED COMMAND #
- ELSE # SYNTAX CHECK OK #
- BEGIN
- IF HRL EQ 0
- AND INDEX NQ NCT"CMD$FL"
- AND INDEX NQ NCT"CMD$DU"
- THEN # ONLY FL COMMAND IS ALLOWED IN MAX FL #
- KRC = 6;
- END
- END
- #
- SWITCH ON COMMAND ORDINAL TO PROCESS COMMAND
- #
- IF KRC EQ 0
- THEN
- BEGIN
- GOTO NAMCMDCASE[INDEX];
- CONTROL EJECT;
- LB$ST: # PROCESS ST - NAM STATUS COMMAND #
- IF NOT KDST[0]
- THEN # STATUS DISPLAY CURRENTLY NOT ON #
- KDIS$STAT = STM"STM$CREATE"; # BUILD STATUS DISPLAY #
- GOTO LB$EXIT;
- LB$AP: # PROCESS AP COMMAND #
- PARAMS2 = 0;
- PARAMS6 = TT$WORD[2]; # APPLICATIONS NAME #
- OVLNAME = KAPIGPP;
- OVLCALL;
- KRC = PARAMS7; # COMMAND ERROR CODE #
- IF KRC EQ 0
- THEN
- BEGIN
- OVLNAME = KPCLNUPP;
- OVLCALL;
- KDAPNM[0] = PARAMS6;
- KDAN[0] = PARAMS4;
- KSHOW[0]=FALSE;
- KDAM[0] = TRUE;
- KDNI[0] = TRUE;
- KDBK[0] = FALSE;
- END
- GOTO LB$EXIT;
- LB$END: # PROCESS END COMMAND #
- OVLNAME = KPCLNUPP;
- OVLCALL;
- GOTO LB$EXIT;
- LB$IG: # PROCESS IG COMMAND #
- PARAMS2 = 1;
- PARAMS6 = TT$WORD[2];
- OVLNAME = KAPIGPP;
- OVLCALL;
- KRC = PARAMS7;
- GOTO LB$EXIT;
- LB$DB: # PROCESS DB COMMAND #
- LB$DE: # PROCESS DE COMMAND #
- LB$DU: # PROCESS DU COMMAND #
- LB$LE: # PROCESS LE COMMAND #
- LB$RS: # PROCESS RS COMMAND #
- LB$LB: # PROCESS LB COMMAND #
- LB$LR: # PROCESS LR COMMAND #
- PARAMS3 = INDEX; # COMMAND ORDINAL #
- PARAMS6 = TT$WORD[2]; # APPLICATION NAME/ALL/NAM #
- IF PARAMS6 EQ "NAM" OR PARAMS6 EQ "ALL"
- THEN
- BEGIN
- OVLNAME = KNAMCOMP; # PROCESS NAM K-DISPLAY COMMAND #
- OVLCALL;
- END
- IF PARAMS6 NQ "NAM"
- THEN
- BEGIN
- OVLNAME = KNAMMODP; # PROCESS APPL K-DISPLAY COMMAND #
- OVLCALL;
- END
- KRC = PARAMS7;
- GOTO LB$EXIT;
- LB$FL: # PROCESS FL COMMAND #
- PARAMS6 = TT$WORD[2]; # FL VALUE #
- OVLNAME = KNAMDFLP;
- OVLCALL;
- KRC = PARAMS7;
- GOTO LB$EXIT;
- LB$MO: # PROCESS MO COMMAND #
- IF TT$WORD[2] EQ "FAST"
- THEN
- BEGIN
- KFAST[0] = TRUE; # SET STATUS DISPLAY TO REAL TIME UPDATE #
- IF KDST[0]
- THEN # STATUS DISPLAY IS ON, UPDATE DISPLAY FIRST #
- KDIS$STAT = STM"STM$UPDATE";
- END
- ELSE
- BEGIN
- IF TT$WORD[2] EQ "SLOW"
- THEN
- KFAST[0] = FALSE;
- ELSE
- KRC = 4;
- END
- KDIS$RT = KDST[0] AND KFAST[0];
- GOTO LB$EXIT;
- LB$SEND: # PROCESS SEND COMMAND #
- PARAMS6 = TT$WORD[2]; # DETERMINE DESTINATION NODE NUMBER #
- PARAMS2 = LOC(TT$WORD[3]); # FWA OF HOP MESSAGE TEXT #
- OVLNAME = KSENDHMP;
- OVLCALL;
- KRC = PARAMS7; # RETURN CODE #
- GOTO LB$EXIT;
- LB$TB: # PROCESS PIP TRACING ON COMMAND #
- LB$TE: # PROCESS PIP TRACING OFF COMMAND #
- KRC = 4; # PIP TRACE OPTION NOT AVAILABLE #
- GOTO LB$EXIT;
- LB$PF: # PROCESS STATUS PAGE FORWARD #
- IF KDST[0]THEN # PERFORM FORWARD PAGE OPERATION #
- BEGIN
- PARAMS1 = 1; # SET PARAMETER FOR PAGE FORWARD #
- OVLNAME = KSTPAGEP;
- OVLCALL;
- END
- GOTO LB$EXIT;
- LB$PB: # PROCESS STATUS PAGE BACKWARD #
- IF KDST[0] THEN # PERFORM BACKWARD PAGE OPERATION #
- BEGIN
- PARAMS1 = 2; # SET PARAMETER FOR PAGE BACKWARD #
- OVLNAME = KSTPAGEP;
- OVLCALL;
- END
- GOTO LB$EXIT;
- LB$RPF:
- KSHOW[0]=TRUE;
- GOTO LB$EXIT;
- LB$HELP:
- IF NOT KDETAIL[0] THEN
- BEGIN
- KDETAIL[0]=TRUE;
- KDRNXT[0]=1;
- KSHOW[0]=TRUE;
- END
- GOTO LB$EXIT;
- LB$ERR: # PROCESS TYPE IN ERROR #
- KRC = 4;
- GOTO LB$EXIT;
- LB$IGNORE: # IGNORE TYPE IN #
- LB$EXIT:
- END # END NAM K DISPLAY COMMAND SWITCH #
- IF KRC NQ 0
- THEN
- BEGIN # ISSUE DIAGNOSTIC TO K DISPLAY #
- IF KDST[0] # RELEASE STATUS DISPLAY TO ISSUE ERROR MSG #
- THEN
- BEGIN
- OVLNAME = KPCLNUPP;
- OVLCALL;
- END
- PARAMS1 = KRC;
- OVLNAME = KDISRCP;
- OVLCALL;
- END
- END # END NAM MODE PROCESSING #
- KBUF1[0] = 0;
- GOTO RJMAIN;
- END # KPTYPIN #
- TERM
cdc/nos2.source/nam5871/kptypin.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator