DCL DD RESOLVE CHAR(34); DCL DD RESOLVE-TYPE CHAR( 2) DEF(RESOLVE) POS( 1); DCL DD RESOLVE-NAME CHAR(30) DEF(RESOLVE) POS( 3); DCL DD RESOLVE-AUTH CHAR( 2) DEF(RESOLVE) POS(33) INIT(X'0000'); ENTRY * EXT; CPYBLA RESOLVE-TYPE, X'0201'; CPYBLAP RESOLVE-NAME, "MISCRNIO", " "; RSLVSP .MISCRNIO, RESOLVE, *, *; CPYBLA CTRL-OPCODE, "OPEN"; CALLX .MISCRNIO, MISCRNIO, *; CPYBLA LEFT-RIGHT, "L"; CPYNV START-NBR, 0; SHOW-THE-SCREEN: CPYBREP CTRL-CURSOR-POSITION, "0"; CPYBLA CTRL-OPCODE, "WRITE"; CALLX .MISCRNIO, MISCRNIO, *; CPYBREP S-MESSAGE, " "; CPYBLA A-MESSAGE, "B"; /* blank */ GET-THE-SCREEN: CPYBLA CTRL-OPCODE, "READ"; CALLX .MISCRNIO, MISCRNIO, *; CMPNV(B) CTRL-CMD-KEY, 0/EQ(SEARCH); CMPNV(B) CTRL-CMD-KEY, 3/EQ(DONE); CMPNV(B) CTRL-CMD-KEY,11/EQ(TOGGLE); CMPNV(B) CTRL-CMD-KEY,12/EQ(DONE); CMPNV(B) CTRL-CMD-KEY,17/EQ(TOP); CMPNV(B) CTRL-CMD-KEY,18/EQ(BOTTOM); CMPNV(B) CTRL-CMD-KEY,27/EQ(PAGE-UP); CMPNV(B) CTRL-CMD-KEY,28/EQ(PAGE-DOWN); FUNCTION-KEY-NOT-USED: CPYBLAP S-MESSAGE, "Function key not used", " "; B SHOW-ERROR-MESSAGE; SEARCH: CMPBLAP(B) S-WORD, " ", " "/EQ(ENTER-A-WORD); CALLI SEARCH-FOR-WORD, *, .SEARCH-FOR-WORD; CPYNV ENTRY-NBR, 1; BUILD-SCREEN: CPYNV START-NBR, ENTRY-NBR; CPYNV LINE-NBR, 1; CPYBLAP S-MORE, "More...", " "; SHOW-NEXT-ENTRY: CMPNV(B) LINE-NBR , SCREEN-LINES /HI(SHOW-THE-SCREEN); CMPNV(B) ENTRY-NBR, OPT-RETURN-COUNT/HI(SHOW-EMPTY-LINE); CPYBLA S-WORDS (LINE-NBR), ENTRY-WORD (ENTRY-NBR); CPYBLA S-MEMBERS(LINE-NBR), ENTRY-MEMBER(ENTRY-NBR); CPYBLA S-LINES (LINE-NBR), ENTRY-LINE (ENTRY-NBR); CPYBLA TEXT, ENTRY-TEXT (ENTRY-NBR); CMPBLA(B) LEFT-RIGHT, "L"/NEQ(=+3); CPYBLAP S-TEXT, "Text--->", " "; CPYBLA S-TEXTS (LINE-NBR), TEXT( 1:34);: CMPBLA(B) LEFT-RIGHT, "R"/NEQ(=+3); CPYBLAP S-TEXT, "<---Text", " "; CPYBLA S-TEXTS (LINE-NBR), TEXT(35:34);: ADDN(S) ENTRY-NBR, 1; CMPNV(B) ENTRY-NBR, OPT-RETURN-COUNT/NHI(=+2); CPYBLAP S-MORE, " Bottom", " ";: ADDN(SB) LINE-NBR, 1/POS(SHOW-NEXT-ENTRY); SHOW-EMPTY-LINE: CMPNV(B) LINE-NBR, SCREEN-LINES/HI(SHOW-THE-SCREEN); CPYBREP S-WORDS (LINE-NBR), " "; CPYBREP S-MEMBERS(LINE-NBR), " "; CPYBREP S-LINES (LINE-NBR), " "; CPYBREP S-TEXTS (LINE-NBR), " "; ADDN(SB) LINE-NBR, 1/POS(SHOW-EMPTY-LINE); PAGE-UP: SUBN(B) ENTRY-NBR, START-NBR, SCREEN-LINES/NNEG(BUILD-SCREEN); TOP: CPYNV(B) ENTRY-NBR, 1/POS(BUILD-SCREEN); BOTTOM: SUBN ENTRY-NBR, OPT-RETURN-COUNT, SCREEN-LINES; ADDN(SB) ENTRY-NBR, 1/POS(BUILD-SCREEN), NPOS(TOP); PAGE-DOWN: CMPBLA(B) S-MORE, "M"/EQ(BUILD-SCREEN); CPYNV(B) ENTRY-NBR, START-NBR/POS(BUILD-SCREEN); TOGGLE: XOR(S) LEFT-RIGHT, X'0A'; /* L <-> R */ CPYNV(B) ENTRY-NBR, START-NBR/POS(BUILD-SCREEN), ZER(SHOW-THE-SCREEN); DONE: CPYBLA CTRL-OPCODE, "CLOSE"; CALLX .MISCRNIO, MISCRNIO, *; RTX *; DCL EXCM * EXCID(H'2200') BP(INDEX-NOT-FOUND) CV(X'00000000') IMD; INDEX-NOT-FOUND: CPYBLAP S-MESSAGE, "Index not found...", " "; CPYBLA A-INDEX , "e"; /* error */ CPYBLA A-LIBRARY, "e"; SHOW-ERROR-MESSAGE: CPYBLA A-MESSAGE, "T"; /* title */ B SHOW-THE-SCREEN; ENTER-A-WORD: CPYBLAP S-MESSAGE, "Enter a word to search for...", " "; CPYBLA A-WORD , "G"; /* error */ B SHOW-ERROR-MESSAGE; /************************** INDEX HANDLING **************************/ DCL SYSPTR .THE-LIBRARY; DCL SYSPTR .THE-INDEX; DCL INSPTR .SEARCH-FOR-WORD; ENTRY SEARCH-FOR-WORD INT; CMPBLAP(B) S-LIBRARY, " ", " "/EQ(USE-LIBRARY-LIST); CMPBLAP(B) S-LIBRARY, "*LIBL", " "/EQ(USE-LIBRARY-LIST); USE-GIVEN-LIBRARY: CPYBLA RESOLVE-TYPE, X'0401'; CPYBLAP RESOLVE-NAME, S-LIBRARY, " "; RSLVSP .THE-LIBRARY, RESOLVE, *, *; CPYBLA RESOLVE-TYPE, X'0E0A'; CPYBLAP RESOLVE-NAME, S-INDEX, " "; RSLVSP .THE-INDEX, RESOLVE, .THE-LIBRARY, *; B FIND-WORDS; USE-LIBRARY-LIST: CPYBLA RESOLVE-TYPE, X'0E0A'; CPYBLAP RESOLVE-NAME, S-INDEX, " "; RSLVSP .THE-INDEX, RESOLVE, *, *; FIND-WORDS: CPYBREP ARG-FROM-WORD, X'00'; CPYBREP ARG-UPTO-WORD, X'FF'; TRIML SIZE, S-WORD, " "; CMPBLA(B) S-WORD(SIZE:1), "*"/NEQ(=+2); SUBN(SB) SIZE, 1 /POS(=+2),ZER(=+4);: CPYNV SIZE, 25;: CPYBLA ARG-FROM-WORD, S-WORD(1:SIZE); CPYBLA ARG-UPTO-WORD, S-WORD(1:SIZE);: CPYBLA OPT-RULE, X'0008'; /* BETWEEN */ FNDINXEN .ENTRIES, .THE-INDEX, .OPTIONS, .ARGUMENTS; B .SEARCH-FOR-WORD; DCL DD SIZE BIN(2); DCL DD TEXT CHAR(80); DCL SPCPTR .ARGUMENTS INIT(ARGUMENTS); DCL DD ARGUMENTS CHAR(52); DCL DD ARG-FROM-WORD CHAR(26) DEF(ARGUMENTS) POS( 1); DCL DD ARG-UPTO-WORD CHAR(26) DEF(ARGUMENTS) POS(27); DCL DD ENTRY-NBR BIN(4); DCL DD START-NBR BIN(4); DCL SPCPTR .OPTIONS INIT(OPTIONS); DCL DD OPTIONS CHAR(16010); DCL DD OPT-RULE CHAR(2) DEF(OPTIONS) POS( 1); DCL DD OPT-ARG-LENGTH BIN(2) DEF(OPTIONS) POS( 3) INIT(26); DCL DD OPT-ARG-OFFSET BIN(2) DEF(OPTIONS) POS( 5) INIT(26); DCL DD OPT-MAX-COUNT BIN(2) DEF(OPTIONS) POS( 7) INIT(4000); DCL DD OPT-RETURN-COUNT BIN(2) DEF(OPTIONS) POS( 9); DCL DD OPT-ENTRY(4000) CHAR(4) DEF(OPTIONS) POS(11); DCL SPCPTR .ENTRIES INIT(ENTRIES); DCL DD ENTRIES (4000) CHAR(120) BDRY(16); DCL DD ENTRY-WORD (4000) CHAR(25) DEF(ENTRIES) POS( 1) AEO(120); DCL DD ENTRY-MEMBER(4000) CHAR(10) DEF(ENTRIES) POS(26) AEO(120); DCL DD ENTRY-LINE (4000) CHAR(05) DEF(ENTRIES) POS(36) AEO(120); DCL DD ENTRY-TEXT (4000) CHAR(80) DEF(ENTRIES) POS(41) AEO(120); /************************* SCREEN DEFINITION ************************/ DCL SPCPTR .SCRN-CTRL INIT(SCRN-CTRL); DCL DD SCRN-CTRL CHAR(8); DCL DD CTRL-OPCODE CHAR(1) DEF(SCRN-CTRL) POS(1); DCL DD CTRL-CMD-KEY ZND(2,0) DEF(SCRN-CTRL) POS(2); DCL DD CTRL-CURSOR-POSITION CHAR(5) DEF(SCRN-CTRL) POS(4); DCL DD CTRL-CURSOR-ROW ZND(2,0) DEF(CTRL-CURSOR-POSITION) POS(1); DCL DD CTRL-CURSOR-COL ZND(3,0) DEF(CTRL-CURSOR-POSITION) POS(3); DCL SPCPTR .SCREEN INIT(SCREEN); DCL DD SCREEN CHAR(10) INIT("T010310020"); DCL DD S-TITLE CHAR(20) INIT("Search Word in Index"); DCL DD * CHAR(10) INIT("L010520000"); DCL DD * CHAR(10) INIT("L030010030"); DCL DD * CHAR(30) INIT("Word to find . . . . . . . . "); DCL DD A-WORD CHAR(10) INIT("Q030320026"); DCL DD S-WORD CHAR(26) INIT(" "); DCL DD * CHAR(10) INIT("L030590015"); DCL DD * CHAR(15) INIT(" Generic*"); DCL DD * CHAR(10) INIT("L050010030"); DCL DD * CHAR(30) INIT("Index . . . . . . . . . . . "); DCL DD A-INDEX CHAR(10) INIT("i050320010"); DCL DD S-INDEX CHAR(10) INIT(" "); DCL DD * CHAR(10) INIT("L050430016"); DCL DD * CHAR(16) INIT(" Name "); DCL DD * CHAR(10) INIT("L060010032"); DCL DD * CHAR(32) INIT(" Library . . . . . . . . . "); DCL DD A-LIBRARY CHAR(10) INIT("i060340010"); DCL DD S-LIBRARY CHAR(10) INIT(" "); DCL DD * CHAR(10) INIT("L060450030"); DCL DD * CHAR(30) INIT(" Name, *LIBL, blank "); DCL DD * CHAR(10) INIT("T080010025"); DCL DD * CHAR(25) INIT("Word "); DCL DD * CHAR(10) INIT("T080270010"); DCL DD * CHAR(10) INIT("Member "); DCL DD * CHAR(10) INIT("T080380006"); DCL DD * CHAR(06) INIT(" Line"); DCL DD * CHAR(10) INIT("T080450034"); DCL DD S-TEXT CHAR(34) INIT("<--Text-->..."); DCL DD * CHAR(10) INIT("L080800000"); DCL DD * CHAR(10) INIT("L090010025"); DCL DD S-WORD-1 CHAR(25); DCL DD * CHAR(10) INIT("L090270010"); DCL DD S-MEMBER-1 CHAR(10); DCL DD * CHAR(10) INIT("L090380006"); DCL DD S-LINE-1 CHAR(06); DCL DD * CHAR(10) INIT("N090450034"); DCL DD S-TEXT-1 CHAR(34); DCL DD * CHAR(10) INIT("L090800000"); /* SIZE 75 */ DCL DD * CHAR(10) INIT("L100010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L100270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L100380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N100450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L100800000"); DCL DD * CHAR(10) INIT("L110010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L110270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L110380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N110450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L110800000"); DCL DD * CHAR(10) INIT("L120010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L120270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L120380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N120450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L120800000"); DCL DD * CHAR(10) INIT("L130010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L130270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L130380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N130450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L130800000"); DCL DD * CHAR(10) INIT("L140010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L140270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L140380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N140450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L140800000"); DCL DD * CHAR(10) INIT("L150010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L150270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L150380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N150450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L150800000"); DCL DD * CHAR(10) INIT("L160010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L160270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L160380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N160450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L160800000"); DCL DD * CHAR(10) INIT("L170010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L170270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L170380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N170450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L170800000"); DCL DD * CHAR(10) INIT("L180010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L180270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L180380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N180450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L180800000"); DCL DD * CHAR(10) INIT("L190010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L190270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L190380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N190450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L190800000"); DCL DD * CHAR(10) INIT("L200010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L200270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L200380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N200450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L200800000"); DCL DD * CHAR(10) INIT("L210010025"); DCL DD * CHAR(25); DCL DD * CHAR(10) INIT("L210270010"); DCL DD * CHAR(10); DCL DD * CHAR(10) INIT("L210380006"); DCL DD * CHAR(06); DCL DD * CHAR(10) INIT("N210450034"); DCL DD * CHAR(34); DCL DD * CHAR(10) INIT("L210800000"); DCL DD * CHAR(10) INIT("T220720007"); DCL DD S-MORE CHAR(07) INIT("More..."); DCL DD * CHAR(10) INIT("L220800000"); DCL DD * CHAR(10) INIT("U230010079"); /* INFORMATIONAL */ DCL DD S-PFKEYS CHAR(79) INIT ("F3=Exit F11=Right/Left F12=Cancel F17=Top F18=Bottom"); DCL DD A-MESSAGE CHAR(10) INIT("T240010079"); /* MESSAGE LINE */ DCL DD S-MESSAGE CHAR(79); DCL DD * CHAR(10) INIT(".000000000"); /* END OF SCREEN */ DCL SYSPTR .MISCRNIO; DCL OL MISCRNIO(.SCRN-CTRL, .SCREEN); DCL DD LEFT-RIGHT CHAR(1); DCL DD LINE-NBR BIN(2); DCL DD SCREEN-LINES BIN(2) INIT(13); DCL DD S-WORDS (13) CHAR(25) DEF(S-WORD-1 ) POS(1) AEO(125); DCL DD S-MEMBERS(13) CHAR(10) DEF(S-MEMBER-1) POS(1) AEO(125); DCL DD S-LINES (13) CHAR(06) DEF(S-LINE-1 ) POS(1) AEO(125); DCL DD S-TEXTS (13) CHAR(34) DEF(S-TEXT-1 ) POS(1) AEO(125);