}  S @@ !a@K@P00050 =DIR$(1000)*100,DIRLINE$*200,FILENAME$*120,DIRCMD$*120,MASTER$*120K@,00052 KEYPOS(6),KEYLEN(6),FLAGS(6)I@@@@@@@  A@My A o@@@ca@ sa@@ha@ xLa@MZ@ [@@a@ a@@ #Z@    A@@  #v A@@a6o@  A@ uZ@@ P@@@ P@"fo,o@wx!d A@ " A@C@@@"fo(o@!doo@    A@A #o # # A@ # # A@o@@@M!d"! o@o@@P@    A@  oo@@P@!a@o@M":";o@-o@@"!0"!0aD@@@C@C@K@&00580 SRCH_STR$*80,REP_STR$*80n@@@@@@@oCo@@ O[@P@  A@Ta@RZ@Ua@SZ@ pa@@"f A@.: !d!$ ;oSo@ !d A@7 #o # A@ # A@@a@!a@\R]S^a@ ja@ ma@ na@ oa@ _a@(a@a@@@C@@@@@@@@K@"01010 KEYPOS(6),KEYLEN(6)7 #o # A@ # A@@,-+ yo@./01+bxo@^@UU@+02:0z;:11;oxo@@@331io@-3#)3#*3#+432 h5xo@ ^@UUU 3fo@@5|"f A{ Ao@{x}A@@@~{q@@331po@3#)!0q@+3#zo@q3#A@+3#o@q3#2A@+3#o@q3#A@3#o@q@@#31o6qq@ 3mo@@331uo@3#*!0q@#31o6qq@ 3ro@@ a@@+P@a@@@C@@@@@@@@K@01400  FULLNAME$*80D@oo@ ea@ 9a@  A@:;! A@@"f A@.: !d!$ ;oo@ !d A@7 #o8 # A@8 # A@@a@@<8=:>a@q:@a@!:Aa@ Ba@C8a@ Da@E8Fa@a@@ N!SA@ (F,a2<ZFjPZd nHt^ ^ x^@v^H2N*H^,8BT^l\x"Hlz,,6@@JT ^n!h~"r,#|,$"% :& I'P(@R)8T* Fp+Vw,Hfy-H~.,/01 20  0 5:V N C7X E8b< G9ln I:v~ K; M< O=, Q>Z c? e@ rA z CH D,E DF G ?H* AI4FJJ>pZ ^LptRx ^N ^O@ ^P^Q $^RzS@TVDWXY2ZB[\]^ _V=`(f?a(Wb$oc.d8,&eBjfL zgV(h`ij jt k~ l6Hm tbny 2p `Vqncr ~es|t u v$w4xH`y @rz~(|2}<B~FPZd$nRxb,r42AFKj\Hz^,n , "l ,1 6> @N J[ T@rm ^~q x0Hd &@ 4@U@{ @hHs D6 Z D  'HsR\$fJL Bs(?@X4lg  .  ol< 3\d^tDMAT DIR$QdDIRLINE$PFILENAME$P xDIRCMD$PxPROCFILE?@:Enter the full path name of the first directory to search.CURRENTLAST@DIR DIRFILE@@Files,$@@.@ X@@\PASS@@WB@LOAD @REPLACE MAT KEYPOS MAT KEYLEN X@@NAME=@,RECL=15LASTRECLASTSORTTYPEKEYS@Z(@@/FULLNAME$P P@PROCERR RETURNTEMPWSID$@ @temp@LIST <@ >@.WBS@.wbs@,SO@SKIP 2 IF ERR<>0@REPL @SKIP 1@PRINT #255: "ERROR ";ERR;" -- @.WB -- FOLLOWING LINE ";LINE@!Choose one of the above functionsX$@@SEARCH3,wbutil\supphelp@NAME=\temp[WSID].WBS,replaceSRCH_STR$P PREP_STR$PP@2Enter string to search for : 80 characters or less@/Enter string to replace : 80 characters or less@list "@ " replace "@" >x.$$$@ subproc x.$$$@$1 REPLACE a STRING in all PROGRAMS@ PROC noecho@73 RELOAD from SOURCE and run SYNTAX3 on each program.@#open #99:'name=x.$$$',display,input@let x=lrec(99) @ close #99: @skip 2 if not x@ proc noecho@SYSTEM other\syntax3 @2 REINDEX all keyed files@NAME=DIRFILE.xxx@ >DIRFILE.xxxG@i@@2@MASTER$PxiNULL$@@INDEX @REPLACE DUPKEYS@(e.g. \BR\PAYROLL ).@NAME=temp[WSID],replace@Re-Index PROC is TEMPMAT FLAGS @P @@B@Y@U@8@@Error- @ Line- p@(Ih(2>JOUajs&6FR_kw&Hh #Y4[n},DUmw #/:G00010! Replace Reindex&00020! Business Rules! Utility00040NEWPAGE00060! ET00070G! This program will search a starting directory and all sub-directoriesT00080G! for filenames and allow you to select and manipulate the files in anyR00090D! way by using or modifying one of the PROCESS FILENAME subroutines.nL00092>! . CAUTION- Please see comments on line 1150 to insure proper 600094(! identification of your master files. 00100! a00110 PROCFILE=1i600115X$="2" : ,170 ! force reindex onlyF001169! ===================400120&"1 REPLACE a STRING in all PROGRAMS"l,00130"2 REINDEX all keyed files"F001409"3 RELOAD from SOURCE and run SYNTAX3 on each program."400150: #"Choose one of the above functions"00160X$#:00170##PROCFILE: "NAME=temp[WSID],replace",,cJ00180<"Enter the full path name of the first directory to search."u&00190"(e.g. \BR\PAYROLL )." 00200DIR$(1)00210CURRENT=LAST=1Y00220! R<00230,DIRCMD$="DIR "&DIR$(CURRENT)&" >DIRFILE.xxx"y.00240DIRCMD$ : 6DIRCMD$ yCKERR00250 DIRFILE=2200260#DIRFILE: "NAME=DIRFILE.xxx",,FL00270#DIRFILE: DIRLINE$ (! Go past first line of directory output00280! D 00290#DIRFILE: DIRLINE$$D00300(POS(DIRLINE$,"Files,")>0 ,,470 ! If no more files*00320FILENAME$=DIRLINE$(46:200)00330X=LEN(FILENAME$)NV00340Gif FILENAME$(X:X)="." then let FILENAME$=FILENAME$(1:X-1) !Clip period00350! f&00360! Process subdirectoriesh.00370(POS(DIRLINE$,"")=0 ,,430P00380(DIRLINE$(1:1)="." ,,290 %! Skip current and parent directories00390 LAST=LAST+1|00400(DIR$(CURRENT)="\" ,#DIR$(LAST)=DIR$(CURRENT)&FILENAME$ !: -&DIR$(LAST)=DIR$(CURRENT)&"\"&FILENAME$00410,29000420! 00430! Process filenamesP00440) VAL(X$(1:1))   STRINGREP,INDEX,LOADSO ! process subroutine00450,29000460! 00470#DIRFILE: ):00480CURRENT=CURRENT+1 ! Move to next directory$00490( CURRENT<=LAST ,,23000500! R00510#PROCFILE: ,00520"Re-Index PROC is TEMP"&WSID$ 00530/00532CKERR: (ERR=4152 OR ERR=1006 l ! Empty or invalid directory !: ,480 !: m!: +"Error- "&STR$(ERR)&" Line- "&STR$(LINE) !: 00540! :00550 STRINGREP: ! J00560=******************* PROCESS FILENAMES ***********************N00570@****************** SREP on all PROGRAMS ************************!L00590?! FILENAME$ contains the filename, a period, and the extension.L00600?! There are no embedded blanks. The name of the directory that200610%! contains the file is DIR$(CURRENT).00620! oT00630F! The following code filters out only .WB files and does a SAVE SOURCE.00640 ! and a RELOAD of every program.o00650! nJ00660(PASS=1 ,,760 *! Skip over this section if not first passL00670?! Create TEMP.WBS so that a work file exists for REPLACE SOURCE600680#"10: "NAME=\temp[WSID].WBS,replace",,00690#10: 00700PASS=1AB007104"Enter string to search for : 80 characters or less"A00720 SRCH_STR$>007301"Enter string to replace : 80 characters or less"00740REP_STR$r&00745#PROCFILE: "proc noecho":00750! O"00760X=POS(FILENAME$,".")h>00770(&X=0 OR UPRC$(FILENAME$(X+1:X+3))<>"WB" ,,900<00780FILENAME$=FILENAME$(1:X-1) ! Remove extensionz00790(DIR$(CURRENT)="\" ,"FILENAME$=DIR$(CURRENT)&FILENAME$ !: -%FILENAME$=DIR$(CURRENT)&"\"&FILENAME$00800! $<00810 FILENAME$ "! Full path name, no .WB extension&*00820#PROCFILE: "LOAD ";FILENAME$ L00830#>PROCFILE: 'list "'&SRCH_STR$&'" replace "'&REP_STR$&'" >x.$$$'>00840#/PROCFILE: "open #99:'name=x.$$$',display,input"T*00850#PROCFILE: "let x=lrec(99) "$&00860#PROCFILE: "close #99: ")*00870#PROCFILE: "skip 2 if not x"$(00880#PROCFILE: "subproc x.$$$"",00890#PROCFILE: "REPLACE ";FILENAME$ 00900!00910! O00920INDEX: ! H009308********************* INDEX ****************************$L00940>! Filename$ Contains The Filename, A Period, And an Extension.P00950B! The Master Is Assumed To Have The Same Basename as the key file.-R00960D! The Name Of The Directory That Contains The File Is Dir$(Current).00970! hP00980C! The following code filters out index files and writes a proc that:00990,! Re-Indexes Any key File With Unsorted Keysa01000! ez01020(DIR$(CURRENT)="\" ,"FILENAME$=DIR$(CURRENT)&FILENAME$ !: -%FILENAME$=DIR$(CURRENT)&"\"&FILENAME$01030! $@01040# 99: "NAME="&FILENAME$&",RECL=15", ,,91290ER01050#99,1060: LASTREC,LASTSORT,TYPE,KEYS y1280  ! Read header010602*B 4,B 1,X 4,B 101070! D01080()(TYPE<>4 AND TYPE<>7) OR KEYS=0 OR KEYS>6 l,1280 01090! T01100"Z=1 )KEYSDP01110#99,1120,512+Z*4: KEYPOS(Z),KEYLEN(Z),FLAGS(Z) y1280e01120 B 2,B 1,B 101130#Z01140! 01150X=POS(FILENAME$,".",-200) !: MASTER$=FILENAME$ !: (X>0 l!: MASTER$(X:200)=NULL$ ! Zap filename suffix !: C! . NOTE This may need to be changed per the naming conventions !: ;! . e.g. You may want to add ".DAT" to the master file name>01160#,PROCFILE: "INDEX "&MASTER$&" "&FILENAME$&" ";E201170"Z=1 )KEYS ! Print key positionsE(01180#PROCFILE: STR$(KEYPOS(Z));`01182( FLAGS(Z)>7 l! Packed Decimal !: # PROCFILE: "P"; !:  FLAGS(Z) -= 8X01184( FLAGS(Z)>3 l ! Binary !: # PROCFILE: "B"; !:  FLAGS(Z) -= 4V01186( FLAGS(Z)>1 l ! Y2K !: # PROCFILE: "Y"; !:  FLAGS(Z) -= 2 D01188( FLAGS(Z)>0 l! Uppercase !: # PROCFILE: "U";@01190(Z01490(&X=0 OR UPRC$(FILENAME$(X+1:X+3))<>"WB" ,,1620<01500FILENAME$=FILENAME$(1:X-1) ! Remove extensionz01510(DIR$(CURRENT)="\" ,"FULLNAME$=DIR$(CURRENT)&FILENAME$ !: -%FULLNAME$=DIR$(CURRENT)&"\"&FILENAME$01520! $<01530 FILENAME$ "! Full path name, no .WB extension&01540! E@01550#.PROCFILE: "LIST <";FULLNAME$;" >";TEMPWSID$;".WBS"@01560#0PROCFILE: "SYSTEM other\syntax3 ";TEMPWSID$;".wbs"001570#PROCFILE: "LOAD ";TEMPWSID$;",SO"T*01580#PROCFILE: "SKIP 2 IF ERR<>0"*01590#PROCFILE: "REPL ";FULLNAME$ 01600#PROCFILE: "SKIP 1"b01610#QPROCFILE: 'PRINT #255: "ERROR ";ERR;" -- ';FULLNAME$;'.WB -- FOLLOWING LINE ";LINE'$ 01620!01630! O601640SHELP:  HELP$("SEARCH3,wbutil\supphelp")