. egr@C@)o@ !a@K@>00050 .DIR$(100)*70,DIRLINE$*80,FILENAME$*80,DIRCMD$*120@@@@@  A@ca@aa@ha@ xLa@MZ@ f[@a@Ha@ #Z@    A@@  # A@ av@  A@ Z@ P@@ P@"fo,o@ A@!d!` A@ " A@(!do !d A@@@"fo(o@!doo@    A@A #o # # A@ # # A@o@@@M!d"! o@o@@P@    A@  oo@@P@gq@o@@@C@C@K@&00580 SRCH_STR$*80,REP_STR$*800@@@@@@@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(3),KEYLEN(3)7 #o # A@ # A@@,-+ yo@./01+bo@^@UU@!02:1./;oxo@@331io@"3#)3#*+412 hu@ ^@UU 3fo@@@5q@331po@3#)!0q@#31o6qq@ 3mo@@331uo@3#*!0q@#31o6qq@ 3ro@@ da@+P@a@@@C@@@@@@@@K@01400  FULLNAME$*80 @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@,(^,a2"<r_FaPcZ*ed|g ni^ ^ x^@v^DXtH&p "H",,-6F@.TJvqT  ^!h"r,#|,H$% & ,/'<6(@L8)8l:* V+],H_-g.,.t/R0b1z2305: Nl 7X 8b 9l6 :vF ; < =, >" ?n @ A  ?CH AD, QE  F H G  H* I4J>8 ^Lp<5Rx ^N ^O@ ^P^Q $^RzdBS@RTVZV^W\`XbYdZf[:h\|j]rm^ _`(a(Vb$c. d8, eB -fL /gV(4Fh`riij tjtk~lm ,n^o p qr st <#u |GvTwVxHcy @kzo(s|2bw}<y~F{P,}Z<dnx,PH,F- Bz |HX",62@\J|T@^xs| P &@4@XU@q{ 0HhHD6 " " ` +*HR\f(Lv 2BMAT DIR$QFdDIRLINE$PPFILENAME$P PDIRCMD$PxPROCFILE?@:Enter the full path name of the first directory to search.CURRENTLAST@DIR @ >DIRFILE.$$$DIRFILE@@NAME=DIRFILE.$$$@Files,$@@.*@@ @X@@\PASS@@WB@LOAD @REPLACE MAT KEYPOS MAT KEYLEN X@@NAME=@,RECL=15LASTRECLASTSORTTYPEKEYS@Z(@@INDEX TEMP.FIL @/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@(e.g. \WB\PAYROLL or A:\).@!Choose one of the above functionsX$@1 R@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.$$$@#2 INDEX REORG for all keyed files@$1 REPLACE a STRING in all PROGRAMS@REORG REPLACE DUPKEYS -N@ PROC noecho@NAME=temp[WSID].$$$,replace@PROC=temp[WSID].$$$@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 &7FVbn *6BHTZ`lv  4DT`my /9Dg.>F}<Yi)=M*00010! Workstation Basic Utilities00020REPLACE SEARCH00030)#,SHELP00040NEWPAGE00060! $T00070G! 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.00100! y00110 PROCFILE=1o400120&"1 REPLACE a STRING in all PROGRAMS""200130%"2 INDEX REORG for 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",,PJ00180<"Enter the full path name of the first directory to search.""*00190"(e.g. \WB\PAYROLL or A:\).""00200DIR$(1)00210CURRENT=LAST=1Y00220! R:00230,DIRCMD$="DIR "&DIR$(CURRENT)&" >DIRFILE.$$$"n"00240DIRCMD$ : 6DIRCMD$00250 DIRFILE=2000260#DIRFILE: "NAME=DIRFILE.$$$",,UJ00270#DIRFILE: DIRLINE$ '! Go past first line of directory ouput00280! # 00290#DIRFILE: DIRLINE$$D00300(POS(DIRLINE$,"Files,")>0 ,,470 ! If no more filesJ00310DIRLINE$(10:10)="." &! Insert period in file/directory name H00320)FILENAME$=SREP$(DIRLINE$(1:13),1," ","") ! Remove blanks 00330X=LEN(FILENAME$)IP00340(FILENAME$(X:X)="." ,FILENAME$=FILENAME$(1:X-1)  ! Clip period00350! N&00360! Process subdirectoriesT.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! 0 00430! Process filenamesP00440) VAL(X$(1:1))   STRINGREP,INDEX,LOADSO ! process subroutine 00450,29000460! 000470#DIRFILE: :00480CURRENT=CURRENT+1 ! Move to next directoryj$00490( CURRENT<=LAST ,,23000500! E00510#PROCFILE: "005201"PROC=temp[WSID].$$$" 00530/000540! P00550 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! iT00630F! The following code filters out only .WB files and does a SAVE SOURCEE.00640 ! and a RELOAD of every program. 00650! J00660(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=1 B007104"Enter string to search for : 80 characters or less" 00720 SRCH_STR$>007301"Enter string to replace : 80 characters or less"00740REP_STR$$&00745#PROCFILE: "proc noecho""00750! S"00760X=POS(FILENAME$,".")]>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 extensionT*00820#PROCFILE: "LOAD ";FILENAME$$L00830#>PROCFILE: 'list "'&SRCH_STR$&'" replace "'&REP_STR$&'" >x.$$$'>00840#/PROCFILE: "open #99:'name=x.$$$',display,input""*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!000910! 00920INDEX: ! L00930>********************* INDEX REORG **************************** L00940?! FILENAME$ contains the filename, a period, and the extension.L00950?! There are no embedded blanks. The name of the directory that200960%! contains the file is DIR$(CURRENT).00970! iP00980C! The following code filters out index files and writes a proc thatB009904! does an INDEX REORG on any file with unsorted keys 01000! az01020(DIR$(CURRENT)="\" ,"FILENAME$=DIR$(CURRENT)&FILENAME$ !: -%FILENAME$=DIR$(CURRENT)&"\"&FILENAME$01030! (@01040# 99: "NAME="&FILENAME$&",RECL=15", ,,91290H01050#99,1060: LASTREC,LASTSORT,TYPE,KEYS  ! read header 010602*B 4,B 1,X 4,B 101070! B>01080(%TYPE<>4 OR KEYS=0 OR LASTREC=LASTSORT ,,128001090! <01100"Z=1 )KEYS>01110#99,1120,5 12+KEYS*4: KEYPOS(Z),KEYLEN(Z)01120B 2,B 101130#Z01140! P01150B! TEMP.FIL in the index command below is ignored for a REORG index2801160#)PROCFILE: "INDEX TEMP.FIL "&FILENAME$&" ";201170"Z=1 )KEYS ! Print key positionsM(01180#PROCFILE: STR$(KEYPOS(Z));@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 extensionT01540! I@01550#.PROCFILE: "LIST <";FULLNAME$;" >";TEMPWSID$;".WBS"@01560#0PROCFILE: "SYSTEM other\syntax3 ";TEMPWSID$;".wbs"001570#PROCFILE: "LOAD ";TEMPWSID$;",SO""*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!001630! 601640SHELP:  HELP$("SEARCH3,wbutil\supphelp")