** **BASIC **11-22-08 13:03:09 **03/20/88 **TOM PHILLIPS **WWW.TOM-PHILLIPS.INFO **Copyright 2008 by SQUASH. All rights reserved. ** * * QDSEARCH - A utility to search all dictionaries in an account * for a series of strings, and display the lines found. * The dictionary item search includes the key. * * Note: a change is needed for R83 based systems concerning the * master dictionary define file code (i.e. "D"). * EQU GLBL.R83 TO 0;* SET TO 1 IF R83 BASED SYSTEM * *EQU AM TO @AM;* NORMALLY CHAR(254) EQU AM TO CHAR(254) PROMPT '' PROCREAD PROC.RCD THEN PROC.RCD='';TERM.FLG=0 ELSE TERM.FLG=1 * BEGIN CASE CASE (GLBL.R83) SRCH.FDC='D' MDCT.NAM='MD' MDCT.ITM='*A1' CASE 1 SRCH.FDC='F' MDCT.NAM='VOC' MDCT.ITM='F1' END CASE OPEN '',MDCT.NAM TO MDCT ELSE PRINT \Can't open \:MDCT.NAM;STOP * SRCH.CDE='"':SRCH.FDC:']"' * SRCH.IDX=0 SRCH.IDS='' LOOP IF (TERM.FLG) THEN PRINT 'Enter a search string: ': INPUT SRCH.ITM UNTIL SRCH.ITM='' DO SRCH.IDX=SRCH.IDX+1 SRCH.IDS=SRCH.ITM REPEAT IF NOT(SRCH.IDX) THEN STOP * EXEC.SEL='SSELECT ':MDCT.NAM:' WITH ':MDCT.ITM:' ':SRCH.CDE EXECUTE EXEC.SEL DICT.IDS='' ITEM.END=0 LOOP READNEXT DICT.NAM ELSE ITEM.END=1 UNTIL (ITEM.END) DO DICT.IDS<-1>=DICT.NAM REPEAT LAST.LIN=DCOUNT(DICT.IDS,AM) IF NOT(LAST.LIN) THEN STOP * FOR DICT.CTR=1 TO LAST.LIN DICT.NAM=DICT.IDS OPEN 'DICT',DICT.NAM TO DFIL THEN SELECT DFIL ITEM.END=0 LOOP READNEXT ITEM.KEY ELSE ITEM.END=1 UNTIL (ITEM.END) DO READ ITEM.REC FROM DFIL,ITEM.KEY THEN IF INDEX('ASX',ITEM.REC<1>[1,1],1) THEN DISP.PRT=0 ITEM.REC=INSERT(ITEM.REC,1;ITEM.KEY) FOR LOOP.IDX=1 TO SRCH.IDX IF INDEX(ITEM.REC,SRCH.IDS,1) THEN ITEM.LMT=DCOUNT(ITEM.REC,AM) FOR ITEM.LIN=1 TO ITEM.LMT IF INDEX(ITEM.REC,SRCH.IDS,1) THEN IF NOT(DISP.PRT) THEN HEADING ' ' PRINT PRINT 'Dict: ':DICT.NAM:' Item: ':ITEM.KEY DISP.PRT=1 END IF ITEM.REC#ITEM.KEY THEN PRINT ITEM.LIN-1:': ':ITEM.REC IF SRCH.IDX>1 THEN ITEM.REC='' END END NEXT ITEM.LIN END NEXT LOOP.IDX END END REPEAT END NEXT DICT.CTR * STOP * END