!*************************** AMUS Program Label ******************************
! Filename: DBCHKD.BAS Date: 3/26/91
! Category: UTIL Hash Code: 541-615-103-524 Version: 91.3A(25)
! Initials: MKE/AM Name: DAVID W. BARROW III
! Company: STONEWALL COMPUTER CENTER Telephone #: 4143752667
! Related Files: DBCHKD.RUN, DBCHKD.WRT, DBCHKD.DOC
! Min. Op. Sys.: AMOS/L 1.3 Expertise Level: BEG
! Special: Need a directory created by DIR/D/H/V (dirnam.ext)=(filspecs).
! Description: Uses VERIFY.LIT and creates a file comparing the directory
! to what is actually on the system. I find it a lot more informative than
! using just VERIFY alone.
!*****************************************************************************
! DBCHKD.BAS - Dave Barrow's CHecK Directory
!
! Copyright 1991 by David W. Barrow III
!
! WRITTEN by DAVID W. BARROW III
! at STONEWALL COMPUTER CENTER
! 1894 Elm Drive, Town of Cedarburg
! West Bend, WI 53095
! Telephone (414) 375-AMOS
! on June 24, 1990
!
! ACKNOWLEDGEMENT - Thanks to Alan D. Christensen, of Christensen Computer Co.,
! for teaching me the technique of writing a program - to write a
! program - to write a program.
!
! DBCHKD (1) makes a copy of a directory file;
! (2) VERIFYs it;
! (3) makes a list of the non-verified files;
! (4) Makes a .CMD file to get the existing file specifications;
! (5) gets the version and hash of those changed files from
! the system;
! (6) prints the old and new data to a file;
! (7) Cleans up the work files.
!
! DBCHKD does NOT modify the directory being checked!
!
! MODIFICATION HISTORY
! Date R Who What
!--------- - --- ----------------------------------------------
! 03-24-91 DWB Copy from FIXDIR and modify
! 03-25-91 A DWB Fix DIRNAM.CHK spacing
!
00999
01000 PROGRAM DBCHKD,91.03A(25)
01019
01100 MAP1 COUNTER, F, 6, 0 ! Loop counter
01110 MAP1 EXIST, F, 6, 0 ! Lookup answer
01120 MAP1 SPEC'END, F, 6, 0 ! Position of end of file'specification
01130 MAP1 CONTINUE, S, 1, "N" ! Answer to "Do you wish to continue?"
01140 MAP1 DIRNAM, S, 10 ! Name of directory file to be checked
01150 MAP1 DSTRING, S, 45 ! Used by ODTIM xcall
01160 MAP1 FILNAM, S, 12 ! names/files accessed by this program
01170 MAP1 OVER'WRITE, S, 180 ! WARNING
01172 MAP1 P'DT$, S, 32 ! Produced date string
01180 MAP1 Q$, S, 1, CHR$(34) ! Puts a quote in output file
01190 MAP1 RUN'DATE, S, 25 ! Put run date into generated programs
01200 MAP1 T$, S, 1, CHR$(9) ! Puts a tab in output file
01209
01300 HOUSEKEEPING:
! Get the date from the system and construct PROGRAM syntax
01310 XCALL ODTIM, DSTRING,0,0,840 ! Get date as MM/DD/YY
01320 RUN'DATE = "PROGRAM " + "UTDCPx" + "," + DSTRING[7,8] + "." &
+ DSTRING[1,2] + "A(" + DSTRING[4,5] + ")"
01322 P'DT$ = "This file was produced " + DSTRING[1,8]
01329
! Let the user know what is going on
01330 PRINT TAB(-1,0) ! Clear the screen
01340 PRINT TAB(01,01); "DBCHKD - Dave Barrow's CHecK Directory "; &
"program (lists differences)"
01350 PRINT TAB(03,01); " Written by David W. Barrow III at "; &
"STONEWALL COMPUTER CENTER"
01360 PRINT TAB(04,01); " 1894 Elm Drive, Town of "; &
"Cedarburg, West Bend, WI 53095"
01370 PRINT TAB(05,01); " Telephone "; &
"(414) 375-AMOS"
01380
01390 PRINT TAB(07,01); "DBCHKD will take any directory " &
"created using 'DIR/D/H/V filnam.ext='"
01400 PRINT TAB(08,36); "AND THEN"
01410 PRINT TAB(09,05); "Phase 1 - Makes a copy of the directory file"
01420 PRINT TAB(10,06); "Phase 2 - Verifies the copy"
01430 PRINT TAB(11,07); "Phase 3 - Eliminates the 'VERIFIED' entries"
01440 PRINT TAB(12,08); "Phase 4 - Makes a .CMD file to get "; &
"current version and hash data"
01450 PRINT TAB(13,09); "Phase 5 - Gets that data"
01460 PRINT TAB(14,10); "Phase 6 - Makes a list file of all of "; &
"the differences"
01470 PRINT TAB(22,01);
01480 STOP
01489
01490 PRINT TAB(07,01); TAB(-1,10)
01500 PRINT TAB(07,01); "What is the name of the directory to be "; &
"checked? (def=AMOS.DIR) ";
01510 INPUT ""; DIRNAM
01520 DIRNAM = UCS(DIRNAM)
01530 XCALL STRIP, DIRNAM
01540 IF ( LEN(DIRNAM) = 0 ) &
THEN DIRNAM = "AMOS"
01550 SPEC'END = INSTR(1,DIRNAM,".")
01560 IF ( SPEC'END = 0 ) &
THEN DIRNAM = DIRNAM + ".DIR"
01569
01570 ! Abort if VERIFY.LIT doesn't exist
01580 LOOKUP "DSK0:VERIFY.LIT[1,4]", EXIST
01590 IF ( EXIST < 1 ) &
THEN PRINT TAB(09,10); "I can't work without "; &
"DSK0:VERIFY.LIT[1,4] - Sorry" &
: END
01599
01600 ! Abort if the directory doesn't exist
01610 LOOKUP DIRNAM, EXIST
01620 IF ( EXIST < 1 ) &
THEN PRINT TAB(09,10); "Fatal error - "; &
"I can't find "; DIRNAM &
: END
01629
01630 ! Check to see if any name conflicts
01640 DATA "UTDCP1.CMD","UTDCP1.DIR","UTDCP3.BAS","UTDCP3.LST"
01650 DATA "UTDCP3.RUN","UTDCP4.BAS","UTDCP4.RUN","UTDCP5.CMD"
01660 DATA "UTDCP5.DIR","UTDCP5.LST","UTDCP6.BAS","UTDCP6.RUN"
01670 DATA "UTDCP7.BAS","UTDCP8.CMD","DBCHKD.DIR","UTDCP7.RUN"
01680 DATA "VERIFY.LST"
01689
01690 FOR COUNTER = 1 TO 17
01700 READ FILNAM
01710 LOOKUP FILNAM, EXIST
01720 ! Put in the commas between file names
01730 IF ( EXIST <> 0 ) &
THEN IF ( LEN(OVER'WRITE) > 2) &
THEN OVER'WRITE = OVER'WRITE + ", "
01740 ! Put in the file names that will be over written
01750 IF ( EXIST <> 0 ) &
THEN OVER'WRITE = OVER'WRITE + FILNAM
01760 NEXT COUNTER
01770
01780 IF ( LEN(OVER'WRITE) > 2 ) &
THEN PRINT; CHR(7) &
: PRINT; "WARNING! The following files WILL "; &
"be overwritten: "; OVER'WRITE &
: PRINT &
: PRINT; "Do you wish to continue? (def=N) "; &
: INPUT ""; CONTINUE &
: IF ( UCS(CONTINUE) <> "Y" ) &
THEN END
01789
01800 ! PHASE1:
01810 PRINT TAB(08,01); TAB(-1,10)
01820 PRINT; "Phase 1 of DBCHKD - Create necessary files"
01830 OPEN #1, "UTDCP1.CMD", OUTPUT
01840 PRINT #1; "; UTDCP1.CMD - PHASE 1 and 2 of DBCHKD"
01842 PRINT #1; "; "; P'DT$
01860 PRINT #1
01870 PRINT #1; "; Compile the Basic files"
01880 PRINT #1; "COMPIL UTDCP3.BAS"
01890 PRINT #1; "COMPIL UTDCP4.BAS"
01900 PRINT #1; "COMPIL UTDCP6.BAS"
01910 PRINT #1; "COMPIL UTDCP7.BAS"
01920 PRINT #1
01930 PRINT #1; "; Copy the directory so we can't damage anything"
01940 PRINT #1; "COPY UTDCP1.DIR = "; DIRNAM
01950 PRINT #1
01960 PRINT #1; "; Let the user know what DBCHKD is doing"
01970 PRINT #1; ":< Phase 2 of DBCHKD - Verify the Directory to a file"
01980 PRINT #1; ">"
01990 PRINT #1; "VERIFY/F UTDCP1.DIR"
02000 PRINT #1; ":R"
02010 PRINT #1; "; Chain to the next step"
02020 PRINT #1; "RUN UTDCP3"
02030 CLOSE #1
02039
03000 ! PHASE 3 takes the file produced by VERIFY and eliminates those that are OK
03010 OPEN #2, "UTDCP3.BAS", OUTPUT
03020 PRINT #2; T$; "! UTDCP3.BAS - PHASE 3 OF DBCHKD"
03030 PRINT #2; T$; "! Takes VERIFY.LST and prints "; &
"those changed to UTDCP3.LST"
03032 PRINT #2; T$; "! "; P'DT$
03040 PRINT #2; T$; "! This is a temporary file - "; &
"You may erase it."
03050 PRINT #2; T$; "!"
03060 PRINT #2; "3009"
03070 RUN'DATE = RUN'DATE[1,13] + "3" + RUN'DATE[15,25] ! Fix pgmnam
03080 PRINT #2; "3010"; T$; RUN'DATE
03090 PRINT #2; "3019"
03100 PRINT #2; "3020"; T$; "PRINT; "; Q$; " Phase 3 of DBCHKD - "; &
"Eliminate the 'VERIFIED' files"; Q$
03110 PRINT #2; "3029"
03120 PRINT #2; "3100"; T$; "MAP1 COUNTER,F,6,0 ! Error count"
03130 PRINT #2; "3110"; T$; "MAP1 EXIST,F,6,0 ! LOOKUP answer"
03140 PRINT #2; "3120"; T$; "MAP1 FILNAM,S,10 ! Variable for DATA"
03150 PRINT #2; "3130"; T$; "MAP1 INLINE,S,90 ! Line from VERIFY.LST"
03160 PRINT #2; "3139"
03170 PRINT #2; "3200"; " HOUSEKEEPING:"
03180 PRINT #2; "3210"; T$; "LOOKUP "; Q$; "VERIFY.LST"; Q$; ", EXIST"
03190 PRINT #2; "3220"; T$; T$; "IF"; T$; "( EXIST < 1 )"; T$; T$; &
T$; T$; T$; "&"
03200 PRINT #2; T$; T$; "THEN"; T$; "PRINT "; Q$; &
"VERIFY didn't work."; Q$; ";"; TAB(72); "&"
03210 PRINT #2; T$; T$; T$; T$; Q$; " Check your directory."; Q$; &
TAB(72); "&"
03220 PRINT #2; T$; T$; T$; ": END"
03230 PRINT #2; "3229"
03240 PRINT #2; "3230"; T$; "OPEN #3, "; Q$; "VERIFY.LST"; Q$; ", INPUT"
03250 PRINT #2; "3240"; T$; "OPEN #4, "; Q$; "UTDCP3.LST"; Q$; ", OUTPUT"
03260 PRINT #2; "3249"
03270 PRINT #2; "3300"; " PHASE3:"
03280 PRINT #2; "3310"; T$; "INPUT LINE #3, INLINE"
03290 PRINT #2; "3320"; T$; T$; "IF"; T$; "( EOF(3) <> 0 )"; TAB(72); "&"
03300 PRINT #2; T$; T$; "THEN"; T$; "GOTO EXIT3"; T$; T$; T$; &
"! Check for EOF"
03310 PRINT #2; "3340"; T$; T$; "IF"; T$; "( INSTR(1,INLINE,"; &
Q$; "VERIFIED"; Q$; ") <> 0 )"; T$; T$; "&"
03320 PRINT #2; T$; T$; "THEN"; T$; "GOTO PHASE3"; T$; T$; &
T$; "!If OK don't fix"
03330 PRINT #2; "3350"; T$; T$; "IF"; T$; "( INSTR(1,INLINE,"; &
Q$; "Total "; Q$; ") <> 0 )"; T$; T$; "&"
03340 PRINT #2; T$; T$; "THEN"; T$; "COUNTER = COUNTER - 1"; T$; T$; &
T$; T$ "&"
03350 PRINT #2; T$; T$; T$; ": GOTO EXIT3"
03360 PRINT #2; "3360"; T$; "PRINT #4, INLINE"
03370 PRINT #2; "3370"; T$; "COUNTER = COUNTER + 1"
03380 PRINT #2; "3380"; T$; "GOTO PHASE3"
03390 PRINT #2; "3389"
03400 PRINT #2; "3400"; " EXIT3:"
03410 PRINT #2; "3410"; T$; "CLOSE #3"
03420 PRINT #2; "3420"; T$; "CLOSE #4"
03430 PRINT #2; "3430"; T$; T$; "IF"; T$; "( COUNTER = 0 )"; T$; &
T$; T$; T$; T$; "&"
03440 PRINT #2; T$; T$; "THEN"; T$; "PRINT"; T$; T$; T$; T$; T$; T$; "&"
03450 PRINT #2; T$; T$; T$; ": PRINT TAB(20); "; &
Q$; "CONGRATULATIONS!"; Q$; T$; T$; "&"
03460 PRINT #2; T$; T$; T$; ": PRINT; "; Q$; "Your Directory "; &
"matches the files "; Q$; ";"; T$; "&"
03470 PRINT #2; T$; T$; T$; T$; Q$; "on your system"; Q$; T$; &
T$; T$; T$; "&"
03480 PRINT #2; T$; T$; T$; ": PRINT TAB(15); "; &
Q$; "Have a GOOD day!"; Q$; T$; T$; "&"
03490 PRINT #2; T$; T$; T$; ": CALL CLEAN'EM"; TAB(72); "&"
03500 PRINT #2; T$; T$; "ELSE"; T$; "CHAIN "; Q$; "UTDCP4"; Q$
03510 PRINT #2; "3440"; T$; "END"
03520 PRINT #2; "3449"
03530 PRINT #2; "3500"; " CLEAN'EM:"
03540 PRINT #2; "3510"; T$; "DATA UTDCP1.CMD,UTDCP1.DIR,UTDCP3.BAS,UTDCP3.LST"
03550 PRINT #2; "3520"; T$; "DATA UTDCP3.RUN,UTDCP4.BAS,UTDCP4.RUN,UTDCP5.CMD"
03560 PRINT #2; "3530"; T$; "DATA UTDCP5.DIR,UTDCP5.LST,UTDCP6.BAS,UTDCP6.RUN"
03570 PRINT #2; "3540"; T$; "DATA UTDCP7.BAS,UTDCP8.CMD,UTDCP7.RUN,VERIFY.LST"
03580 PRINT #2; "3549"
03590 PRINT #2; "3550"; T$; "FOR COUNTER = 1 TO 16"
03600 PRINT #2; "3560"; T$; T$; "READ FILNAM"
03610 PRINT #2; "3570"; T$; T$; "LOOKUP FILNAM, EXIST"
03620 PRINT #2; "3580"; T$; T$; T$; "IF"; T$; "( EXIST <> 0 )"; &
TAB(72); "&"
03630 PRINT #2; T$; T$; T$; "THEN"; T$; "KILL FILNAM"
03640 PRINT #2; "3590"; T$; "NEXT COUNTER"
03650 PRINT #2; "3600"; T$; "RETURN"
03660 PRINT #2; "3609"
03670 PRINT #2; "3999"; "!"; T$; "*"; T$; "**"; T$; "***"; T$; &
"End of UTDCP3.BAS"; T$; "***"; T$; "**"; T$; "*"
03680 CLOSE #2
03999
! PHASE 4 MAKES A .CMD FILE TO FIND NEW FILE INFO
! I realize that Phase 4 could be combined with Phase 3
04000
04010 OPEN #5, "UTDCP4.BAS", OUTPUT
04020 PRINT #5; T$; "! UTDCP4.BAS - Phase 4 of DBCHKD"
04030 PRINT #5; T$; "! Creates a command file to "; &
"get current filspecs"
04032 PRINT #5; T$; "! "; P'DT$
04040 PRINT #5; T$; "! This is a temporary file - "; &
"You may erase it."
04050 PRINT #5; T$; "!"
04060 PRINT #5; "4009"
04070 RUN'DATE = RUN'DATE[1,13] + "4" + RUN'DATE[15,25] ! Fix pgmnam
04080 PRINT #5; "4010"; T$; RUN'DATE
04090 PRINT #5; "4019"
04100 PRINT #5; "4110"; T$; "MAP1 FILNUM, F, 6, 0"
04102 PRINT #5; "4120"; T$; "MAP1 SPEC'END, F, 6, 0"
04110 PRINT #5; "4130"; T$; "MAP1 FILNAM, S, 12 , "; Q$; Q$
04112 PRINT #5; "4140"; T$; "MAP1 FILNUM$, S, 4, "; Q$; Q$
04114 PRINT #5; "4150"; T$; "MAP1 INLINE, S, 80, "; Q$; Q$
04120 PRINT #5; "4159"
04130 PRINT #5; "4200"; " HOUSEKEEPING:"
04140 PRINT #5; "4210"; T$; "OPEN #4, "; Q$; "UTDCP3.LST"; Q$; ", INPUT"
04150 PRINT #5; "4220"; T$; "OPEN #6, "; Q$; "UTDCP5.CMD"; Q$; ", OUTPUT"
04160 PRINT #5; "4229"
04170 PRINT #5; "4230"; T$; "PRINT; "; Q$; " Phase 4 of DBCHKD - "; &
"Create a command file to get current file info"; Q$
04180 PRINT #5; "4239"
04190 PRINT #5; "4240"; T$; "! Put in some header information"
04200 PRINT #5; "4250"; T$; "PRINT #6; "; Q$; "; UTDCP5.CMD - "; &
"Gets current file info"; Q$
! 04210 PRINT #5; "4260"; T$; "PRINT #6; "; Q$; "; "; RUN'DATE[16,25]; Q$
04212 PRINT #5; "4262"; T$; "PRINT #6; "; Q$; "; "; P'DT$; Q$
04220 PRINT #5; "4270"; T$; "PRINT #6; "; Q$; "; This is a "; &
"temporary file - You may erase it"; Q$
04230 PRINT #5; "4280"; T$; "PRINT #6"
04240 PRINT #5; "4290"; T$; "PRINT #6; "; Q$; ":R"; Q$
04250 PRINT #5; "4300"; T$; "PRINT #6; "; Q$; &
":< Phase 5 of DBCHKD - Get the current file info "; Q$
04260 PRINT #5; "4310"; T$; "PRINT #6; "; Q$; ">"; Q$
04270 PRINT #5; "4319"
04280 PRINT #5; "4320"; T$; "! Create the Phase 5 output file"
04290 PRINT #5; "4330"; T$; "OPEN #7, "; Q$; "UTDCP5.DIR"; Q$; ", OUTPUT"
04300 PRINT #5; "4340"; T$; "CLOSE #7"
04310 PRINT #5; "4349"
04320 PRINT #5; "4400"; " PHASE4:"
04330 PRINT #5; "4410"; T$; "INPUT LINE #4, INLINE"
04340 PRINT #5; "4420"; T$; T$; "IF"; T$; "( EOF(4) <> 0 )"; T$; T$; &
T$; T$; T$; "&"
04350 PRINT #5; T$; T$; "THEN"; T$; "GOTO EXIT4"
04360 PRINT #5; "4430"; T$; T$; "IF"; T$; "( INLINE[1,30] "; &
"= SPACE(30) )"; T$; T$; T$; "&"
04370 PRINT #5; T$; T$; "THEN"; T$; "GOTO EXIT4"
04380 PRINT #5; "4440"; T$; "SPEC'END = INSTR(1,INLINE,"; Q$; &
"?File not found"; Q$; ")"
04390 PRINT #5; "4450"; T$; T$; "IF"; T$; "( SPEC'END <> 0 )"; &
TAB(72); "&"
04400 PRINT #5; T$; T$; "THEN"; T$; "CALL NOT'FOUND"; TAB(72); "&"
04410 PRINT #5; T$; T$; T$; ": GOTO PHASE4"
04430 PRINT #5; "4470"; T$; "SPEC'END = INSTR(1,INLINE,"; Q$; "]"; Q$; ")"
04440 PRINT #5; "4480"; T$; "PRINT #6; "; Q$; &
"DIR/D/H/V/K UTDCP5.LST="; Q$; ";"; " INLINE[1,SPEC'END]"
04450 PRINT #5; "4490"; T$; "PRINT #6; "; Q$; "APPEND UTDCP5.DIR "; &
"= UTDCP5.DIR, UTDCP5.LST"; Q$
04460 PRINT #5; "4500"; T$; "GOTO PHASE4"
04470 PRINT #5; "4509"
04480 PRINT #5; "4600"; " EXIT4:"
04490 PRINT #5; "4610"; T$; "CLOSE #4"
04500 PRINT #5; "4620"; T$; "PRINT #6; "; Q$; "RUN UTDCP6"; Q$
04510 PRINT #5; "4630"; T$; "CLOSE #6"
04520 PRINT #5; "4640"; T$; "CHAIN "; Q$; "UTDCP5.CMD"; Q$
04530 PRINT #5; "4650"; T$; "END"
04540 PRINT #5; "4659"
04560 PRINT #5; "4700 NOT'FOUND:"
04570 PRINT #5; "4710"; T$; "FILNUM = FILNUM + 1"
04572 PRINT #5; "4720"; T$; "FILNUM$ = FILNUM USING "; Q$; "#ZZZ"; Q$
04580 PRINT #5; "4730"; T$; "FILNAM = "; Q$; "NF"; Q$; &
" + FILNUM$ + "; Q$; ".LST"; Q$
04590 PRINT #5; "4740"; T$; "OPEN #11, FILNAM, OUTPUT"
04600 PRINT #5; "4750"; T$; "PRINT #11, INLINE[1,30]; INLINE[36,100]"
04610 PRINT #5; "4760"; T$; "CLOSE #11"
04620 PRINT #5; "4770"; T$; "PRINT #6; "; &
Q$; "APPEND UTDCP5.DIR = UTDCP5.DIR,"; Q$; "; FILNAM"
04630 PRINT #5; "4780"; T$; "RETURN"
04640 PRINT #5; "4789"
04650 PRINT #5; "4999"; "!"; T$; "*"; T$; "**"; T$; "***"; T$; &
"End of UTDCP4.BAS"; T$; "***"; T$; "**"; T$; "*"
04660 CLOSE #5
04999
06000 ! PHASE 6 matches the old directory with current info
06010 OPEN #10, "UTDCP6.BAS", OUTPUT
06020 PRINT #10; T$; "! UTDCP6.BAS - List directory anomolies"
06022 PRINT #10; T$; "! "; P'DT$
06030 PRINT #10; T$; "! This is a temporary file - "; &
"You may erase it."
06040 PRINT #10; T$; "!"
06050 PRINT #10; "6009"
06060 RUN'DATE = RUN'DATE[1,13] + "6" + RUN'DATE[15,25] ! Fix pgmnam
06070 PRINT #10; "6010"; T$; RUN'DATE
06080 PRINT #10; "6019"
06090 PRINT #10; "6100"; T$; "MAP1 CHANGED,F,6,0"; T$; T$; &
"! Count #/changed files"
06100 PRINT #10; "6110"; T$; "MAP1 CMNT(3),S,12"; T$; T$; &
"! Comment "; "lines for new .DIR"
06110 PRINT #10; "6120"; T$; "MAP1 DSTRING,S,45"; T$; T$; &
"! Used by ODTIM.SBR"
06120 PRINT #10; "6130"; T$; "MAP1 NEW'COLON,F,6,0"; T$; T$; &
"! Check for two digit logical number"
06130 PRINT #10; "6140
"; T$; "MAP1 NEW'LEN,F,6"; T$; T$; &
"! Get the length of the new line entry"
06140 PRINT #10; "6150"; T$; "MAP1 NEW'LINE,S,100"; T$; T$; &
"! Hold a line for DBCHKD.DIR"
06150 PRINT #10; "6160"; T$; "MAP1 NO'UPDATE,F,6,0"; T$; T$; &
"! Count those not updated"
06160 PRINT #10; "6170"; T$; "MAP1 OLD'COLON,F,6,0"; T$; T$; &
"! Check for two digit logical number"
06170 PRINT #10; "6180"; T$; "MAP1 OLD'LEN,F,6"; T$; T$; &
"! Get the length of the old line entry"
06180 PRINT #10; "6190"; T$; "MAP1 OLD'LINE,S,72"; T$; T$; &
"! Hold a line from UTDCP1.DIR"
06190 PRINT #10; "6200"; T$; "MAP1 PRINT'LINE,S,100,0"; T$; &
"! Output line"
06200 PRINT #10; "6210"; T$; "MAP1 SPEC'END,F,6,0"; T$; T$; &
"! Pos/end of file'spec"
06210 PRINT #10; "6220"; T$; "MAP1 SUBSTITUTE,S,1"; T$; T$; "! Y/N"
06220 PRINT #10; "6229"
06230 PRINT #10; "6300"; " HOUSEKEEPING:"
06240 PRINT #10; "6310"; T$; "OPEN #8, "; Q$; "UTDCP1.DIR"; Q$; &
", INPUT"; T$; T$; T$;"! Directory"
06250 PRINT #10; "6320"; T$; "INPUT LINE #8, OLD'LINE"
06260 PRINT #10; "6330"; T$; "OLD'COLON = INSTR(1,OLD'LINE,"; Q$; &
":"; Q$; ")"; T$; T$; "! Check len/logical#"
06270 PRINT #10; "6340"; T$; "CLOSE #8"
06279 PRINT #10; "6349"
06280 PRINT #10; "6350"; T$; "OPEN #4, "; Q$; "UTDCP5.DIR"; Q$; &
", INPUT"; T$; T$; T$;"! System files"
06290 PRINT #10; "6360"; T$; "INPUT LINE #4, NEW'LINE"
06300 PRINT #10; "6370"; T$; "NEW'COLON = INSTR(1,NEW'LINE,"; &
Q$; ":"; Q$; ")"; T$; T$; "! Check len/logical#"
06310 PRINT #10; "6380"; T$; "CLOSE #4"
06320 PRINT #10; "6399"
06330 PRINT #10; "6400"; T$; "OPEN #8, "; Q$; "UTDCP1.DIR"; Q$; &
", INPUT"; T$; T$; T$;"! Directory"
06340 PRINT #10; "6410"; T$; "OPEN #4, "; Q$; "UTDCP5.DIR"; Q$; &
", INPUT"; T$; T$; T$; "! System files"
06350 PRINT #10; "6420"; T$; "CMNT(1) = "; Q$; DIRNAM; Q$
06360 SPEC'END = INSTR(1,DIRNAM,".")
06370 DIRNAM = DIRNAM[1,(SPEC'END-1)] + ".CHK"
06380 PRINT #10; "6430"; T$; "OPEN #9, "; Q$; DIRNAM; Q$; &
", OUTPUT"; T$; T$; T$; "! Merge file"
06389 PRINT #10; "6439"
06390 PRINT #10; "6440"; T$; "PRINT; "; Q$; " Phase 6 of DBCHKD "; &
"- lists differences to file"; Q$
06399 PRINT #10; "6449"
06400 PRINT #10; "6450"; T$; "! Get the current date"
06410 PRINT #10; "6460"; T$; "XCALL ODTIM, DSTRING,0,0,840"; T$; &
T$; T$; "! MM/DD/YY DATE"
06420 PRINT #10; "6470"; T$; "CMNT(2) = DSTRING"
06430 PRINT #10; "6480"; T$; "XCALL ODTIM, DSTRING,0,0,2049"; T$; &
T$; T$; "! TIME"
06440 PRINT #10; "6490"; T$; "CMNT(3) = DSTRING"
06449 PRINT #10; "6499"
06450 PRINT #10; "6500"; T$; "PRINT #9; "; Q$; DIRNAM; " is a "; &
"list of the differences between "; Q$; ";"
06460 PRINT #10; "6510"; T$; "PRINT #9; CMNT(1); "; &
Q$; " and the system."; Q$
06470 PRINT #10; "6520"; T$; "PRINT #9; "; Q$; "It was produced by "; &
"DBCHKD on "; Q$; "; CMNT(2); "; Q$; " at "; Q$; "; CMNT(3)"
06480 PRINT #10; "6530"; T$; "PRINT #9"
06489 PRINT #10; "6540"
06490 PRINT #10; "6549"; " PHASE6A:"
06500 PRINT #10; "6600"; T$; "INPUT LINE #4, NEW'LINE"; T$; T$; T$; &
"! Get a line of the new info"
06510 PRINT #10; "6610"; T$; T$; "IF"; T$; "( EOF(4) <> 0 )"; T$; &
T$; T$; T$; T$; "&"
06520 PRINT #10; T$; T$; "THEN"; T$; "GOTO EXIT6"; T$; T$; &
"! Check for end-of-file"
!
! The location of the colon will tell how many characters the logical number
! has. My version of DIR.LIT only produces one digit but the latest
! ones from AMTEC have three digits. The listing should
! have the same format throughout.
!
06530 PRINT #10; "6620"; T$; T$; "IF"; T$; "( (OLD'COLON "; &
"- NEW'COLON) = 1 )"; TAB(72); "&"
06540 PRINT #10; T$; T$; "THEN"; T$; "NEW'LINE = NEW'LINE[1,3] + " &
Q$; "0"; Q$; TAB(72); "&"
06550 PRINT #10; TAB(32); " + NEW'LINE[4,29] + NEW'LINE[31,100]"
06560 PRINT #10; "6630"; T$; T$; "IF"; T$; "( (OLD'COLON "; &
"- NEW'COLON) = 2 )"; TAB(72); "&"
06570 PRINT #10; T$; T$; "THEN"; T$; "NEW'LINE = NEW'LINE[1,3] + " &
Q$; "00"; Q$; TAB(72); "&"
06580 PRINT #10; TAB(32); " + NEW'LINE[4,28] + NEW'LINE[31,100]"
!
! The version of DIR.LIT that I have prints the version at col 39 and
! the hash at col 57. The ones I get from AMTEC have version at
! col 31 and hash at col 50. Since all programs don't have version
! numbers but do have hashes you can find out which format by
! checking the first hash digit. If there is a space (chr 32) at
! col 51 then it must be my format - otherwise it is the AMTEC
! format and the revised info should match it. DWB 05-29-90
!
! If the directory being checked is in the new format this takes out
! eight spaces between the filspec and the version and then
! adds one space between the version and the hash .
!
06590 PRINT #10; "6640"; T$; T$; "IF"; T$; "( NEW'LINE[51;1] = "; &
"CHR$(32) )"; TAB(72); "&"
06600 PRINT #10; TAB(16); "AND"; T$; "( OLD'LINE[51;1] <> CHR$(32) )"; &
TAB(72); "&"
06610 PRINT #10; T$; T$; "THEN"; T$; "NEW'LINE = NEW'LINE[1,30] "; &
"+ NEW'LINE[39,56] "; TAB(72); "&"
06620 PRINT #10; TAB(32); "+ CHR$(32) + NEW'LINE[57,100]"
06630 PRINT #10; "6650"; T$; T$; "IF"; T$; "( NEW'LINE[51;1] <> " &
"CHR$(32) )"; TAB(72); "&"
06640 PRINT #10; TAB(16); "AND"; T$; "( OLD'LINE[51;1] = CHR$(32) )"; &
TAB(72); "&"
06650 PRINT #10; TAB(16); "THEN"; T$; "NEW'LINE = NEW'LINE[1,30] "; &
"+ SPACE$(8)"; TAB(72); "&"
06660 PRINT #10; TAB(32); "+ NEW'LINE[31,48] + NEW'LINE[50,100]"
06670 PRINT #10; "6660"; T$; "SPEC'END = INSTR(1,NEW'LINE,"; Q$; "]"; Q$; ")"
06679 PRINT #10; "6669"
06700 PRINT #10; "6700"; " PHASE6B:"
06710 PRINT #10; "6710"; T$; "INPUT LINE #8, OLD'LINE"
06720 PRINT #10; "6720"; T$; T$; "IF"; T$; "( EOF(8) <> 0 )"; TAB(72); "&"
06730 PRINT #10; T$; T$; "THEN"; T$; "GOTO EXIT6"; T$; T$; &
"! Check for End of File"
06740 PRINT #10; "6730"; T$; T$; "IF"; T$; "( OLD'LINE[1,SPEC'END] "; &
"<> NEW'LINE[1,SPEC'END] )"; TAB(72); "&"
06742 PRINT #10; T$; T$; "THEN"; T$; "GOTO PHASE6B"; T$; T$; &
"! If same don't report"
06750 PRINT #10; "6740"; T$; "CHANGED = CHANGED + 1"
06760 PRINT #10; "6760"; T$; "PRINT #9; TAB(5); "; Q$; "Anomaly #"; Q$; &
"CHANGED; TAB(25); CMNT(1); "; Q$; " Directory shows:"; Q$
06770 PRINT #10; "6770"; T$; "PRINT #9; OLD'LINE"
06780 PRINT #10; "6780"; T$; "PRINT #9; TAB(25); "; &
Q$; "file on system is:"; Q$
06790 PRINT #10; "6790"; T$; "PRINT #9; NEW'LINE"
06800 PRINT #10; "6800"; T$; "PRINT #9"
06810 PRINT #10; "6810"; T$; "GOTO PHASE6A"
06819 PRINT #10; "6819"
06820 PRINT #10; "6900"; " EXIT6:"
06830 PRINT #10; "6910"; T$; "CLOSE #8"
06840 PRINT #10; "6920"; T$; "PRINT #9; TAB(20); CHANGED; "; &
Q$; "Files DIDN'T match the directory"; Q$
06850 PRINT #10; "6930"; T$; "CLOSE #9"
06860 PRINT #10; "6940"; T$; "CHAIN "; Q$; "UTDCP7"; Q$
06870 PRINT #10; "6950"; T$; "END"
06880 PRINT #10; "6959"
06890 PRINT #10; "6999"; "!"; T$; "*"; T$; "**"; T$; "***"; T$; &
"End of UTDCP6.BAS"; T$; "***"; T$; "**"; T$; "*"
06900 CLOSE #10
06999
07000 ! Phase 7 does the cleanup
07010 OPEN #11, "UTDCP7.BAS", OUTPUT
07020 PRINT #11; T$; "! UTDCP7.BAS - DBCHKD PHASE 7 - CLEANUP"
07022 PRINT #11; T$; "! "; P'DT$
07030 PRINT #11; T$; "! This is a temporary file "; &
"- You may erase it."
07040 PRINT #11; T$; "!"
07049 PRINT #11; "7009"
07050 RUN'DATE = RUN'DATE[1,13] + "7" + RUN'DATE[15,25] ! Fix pgmnam
07060 PRINT #11; "7010"; T$; RUN'DATE
07069 PRINT #11; "7019"
07070 PRINT #11; "7100"; T$; "MAP1 COUNTER,F,6,0"; T$; T$; T$; T$; &
"! Loop counter"
07080 PRINT #11; "7110"; T$; "MAP1 DO'IT,S,1,"; Q$; "N"; Q$; T$; &
T$; T$; " ! Y/X"
07090 PRINT #11; "7120"; T$; "MAP1 FILNAM,S,10"; T$; T$; T$; T$; &
"! File name to erase"
07099 PRINT #11; "7129"
07100 PRINT #11; "7200 HOUSEKEEPING:"
07110 PRINT #11; "7210"; T$; "OPEN #12, "; Q$; "UTDCP8.CMD"; Q$; ", OUTPUT"
07120 PRINT #11; "7220"; T$; "PRINT #12; "; Q$; "; UTDCP8.CMD "; &
"- DBCHKD CLEANUP"; Q$
07122 PRINT #11; "7222"; T$; "PRINT #12; "; Q$; "; "; P'DT$; Q$
07124 PRINT #11; "7224"; T$; "PRINT #12; "; Q$; "; This is a "; &
"temporary file - You may erase it"; Q$
07130 PRINT #11; "7229"
07140 PRINT #11; "7230"; T$; "PRINT; "; Q$; " Phase 7 of DBCHKD "; &
"- Cleanup"; Q$
07149 PRINT #11; "7239"
07200 PRINT #11; "7300 PHASE7:"
07210 PRINT #11; "7310"; T$; "DO'IT = "; Q$; "N"; Q$
07220 PRINT #11; "7320"; T$; "PRINT TAB(10); "; &
Q$; "Do you want work files erased? (Y/N) (def=N) "; Q$; ";"
07230 PRINT #11; "7330"; T$; "INPUT "; Q$; Q$; "; DO'IT"
07240 PRINT #11; "7340"; T$; "IF"; T$; "( UCS(DO'IT) = "; &
Q$; "Y"; Q$; " )"; TAB(72); "&"
07250 PRINT #11; T$; "THEN"; T$; "CALL CLEAN'EM"
07260 PRINT #11; "7350"; T$; "PRINT #12; "; Q$; ":T"; Q$
07270 PRINT #11; "7360"; T$; "PRINT #12"
07280 PRINT #11; "7370"; T$; "PRINT #12; "; &
Q$; ":<I hope you found DBCHKD useful"; &
" - Dave Barrow"; Q$
07290 PRINT #11; "7380"; T$; "PRINT #12; TAB(10); "; &
Q$; "The comparison file is "; DIRNAM; Q$
07300 PRINT #11; "7390"; T$; "PRINT #12; "; Q$; ">"; Q$
07310 PRINT #11; "7400"; T$; "CLOSE #12"
07320 PRINT #11; "7410"; T$; "CHAIN "; Q$; "UTDCP8.CMD"; Q$
07330 PRINT #11; "7420"; T$; "END"
07339 PRINT #11; "7429"
07340 PRINT #11; "7500"; " CLEAN'EM:"
07350 PRINT #11; "7510"; T$; "DATA UTDCP1.CMD,UTDCP1.DIR,UTDCP3.BAS,UTDCP3.LST"
07360 PRINT #11; "7520"; T$; "DATA UTDCP3.RUN,UTDCP4.BAS,UTDCP4.RUN,UTDCP5.CMD"
07370 PRINT #11; "7530"; T$; "DATA UTDCP5.DIR,UTDCP5.LST,UTDCP6.BAS,UTDCP6.RUN"
07380 PRINT #11; "7540"; T$; "DATA UTDCP7.BAS,UTDCP8.CMD,UTDCP7.RUN,VERIFY.LST"
07389 PRINT #11; "7549"
07390 PRINT #11; "7550"; T$; "FOR COUNTER = 1 TO 16"
07400 PRINT #11; "7560"; T$; T$; "READ FILNAM"
07410 PRINT #11; "7570"; T$; T$; "PRINT #12; "; Q$; "ERASE "; Q$; "; FILNAM"
07420 PRINT #11; "7580"; T$; "NEXT COUNTER"
07430 PRINT #11; "7590"; T$; T$; "PRINT #12; "; Q$; "ERASE NF*.LST"; Q$
07440 PRINT #11; "7600"; T$; "RETURN"
07450 PRINT #11; "7609"
07460 PRINT #11; "7999"; "!"; T$; "*"; T$; "**"; T$; "***"; T$; &
"End of UTDCP7.BAS"; T$; "***"; T$; "**"; T$; "*"
07999
08000 ! Now start working on it
08010 CHAIN "UTDCP1.CMD"
08020 END
08999
09999 ! * ** *** End of DBCHKD.BAS *** ** *