!*************************** AMUS Program Label ******************************
! Filename: GETREV.BAS Date: 11/21/89
! Category: UTIL Hash Code: 202-312-373-670 Version: 88.2C(1)
! Initials: MKE/AM Name: DAVID W. BARROW III
! Company: STONEWALL COMPUTER CENTER Telephone #: 4143752667
! Related Files: GETREV.DOC
! Min. Op. Sys.: Expertise Level: INT
! Special:
! Description: Program which performs a VERIFY on a directory listing. If any
! mismatches occur, these files are placed into a .AGO file. This .AGO file
! can used by AUTOLOG to download the correct files from a remote system.
!*****************************************************************************
01000 ! GETREV.BAS - PRODUCES GETREV.AGO TO GET REVISED SOFTWARE
01010 ! Created by DAVID W. BARROW III at STONEWALL COMPUTER CENTER
01020 ! 1894 Elm Drive, Town of Cedarburg, West Bend, WI 53095
01030 ! Telephone (414) 375-AMOS
01040 ! JANUARY 26, 1988
01050 !
01060 ! (1) TAKE A DIRECTORY AND VERIFY IT TO A FILE, (2) ELIMINATE
01070 ! THE "VERIFIED" AND PRODUCE THE .AGO FILE TO GET 'EM
01080 !
01090 ! (of course if you want to SEND an update (pretty please) just
01100 ! (VUE the GETREV.AGO file and Global the REC to TR)
01110 !
01120 ! Other modifications are left to the user's wildest imagination!
01130 !
01140 ! M O D I F I C A T I O N H I S T O R Y
01150 ! Date Rev. Who What
01160 ! -------- --- --- -------------------------------------
01170 ! 01-28-88 B DWB Shorten to three phases, p/o stat.s
01180 ! 02-01-88 C DWB Put date and time into output files
01190 !
01200
01210 PROGRAM GETREV,88.02C(01)
01220
01230 MAP1 CONTINUE,S,1,"N" ! Answer to "Do you wish to continue?"
01240 MAP1 COUNTER,F,6,0 ! Loop counter
01250 MAP1 EXIST,F,6,0 ! LOOKUP Answer
01260 MAP1 DIRNAM,S,10 ! Name of directory file to be updated
01270 MAP1 FILNAM,S,10 ! names/files accessed by this program
01280 MAP1 OVER'WRITE,S,180 ! WARNING
01290 MAP1 REM'DEV,S,6,"" ! Remote Device ( e.g. DSK0:)
01300 MAP1 Q$,S,1,CHR(34) ! Puts a quote in output file
01310 MAP1 SPEC'END,F,6,0 ! Position of end of file'specification
01320
01330 ! Let the user know what is going on
01340 PRINT TAB(-1,0) ! Clear the screen
01350 PRINT TAB(01,01); "GETREV - A program to create an AUTOLOG "; &
" .AGO file to get revised programs"
01360 PRINT TAB(03,01); " Written by David W. Barrow III at "; &
"STONEWALL COMPUTER CENTER"
01370 PRINT TAB(04,01); " 1894 Elm Drive, Town of "; &
"Cedarburg, West Bend, WI 53095"
01380 PRINT TAB(05,01); " Telephone "; &
"(414) 375-AMOS"
01390
01400 PRINT TAB(07,01); TAB(-1,10) ! Clear the rest of the screen
01410 PRINT TAB(07,01); "More information on AUTOLOG? (Y/N) (def=N) ";
01420 INPUT "", CONTINUE
01430 CONTINUE = UCS(CONTINUE)
01440 IF ( CONTINUE <> "Y" ) &
THEN GOTO DISPLAY'INFO
01450 PRINT TAB(09,01); "AUTOLOG and its 'little brother' DYALOG "; &
"are modem communications programs"
01460 PRINT TAB(10,05); "available from your DEALER, the author of "; &
"this program, or from "
01470 PRINT TAB(12,15); "SOFT MACHINES, INC."
01480 PRINT TAB(13,15); "Post Office Box 3701"
01490 PRINT TAB(14,15); "Champaign, IL 61821"
01500 PRINT TAB(16,15); "Telephone (217) 351-7199"
01510
01520 PRINT TAB(18,05); "They also have developed the following "; &
"software:"
01530 PRINT TAB(19,15); "FOLDERS - create 'sub' disks"
01540 PRINT TAB(20,15); "GOFAST - Disk cache"
01550 PRINT TAB(21,15); "ZIP - Virtual disk"
01560 PRINT TAB(22,01);
01570 STOP
01580
01590 DISPLAY'INFO:
01600 PRINT TAB(07,01); TAB(-1,10) ! Clear the rest of the screen
01610 PRINT TAB(07,01); "GETREV will take any directory " &
"created using 'DIR/D/H/V filnam.ext='"
01620 PRINT TAB(09,36); "AND THEN"
01630 PRINT TAB(11,05); "Phase 1 - Creates the files it needs"
01640 PRINT TAB(12,05); "Phase 2 - VERIFYs the directory file"
01650 PRINT TAB(13,05); "Phase 3 - Creates GETREV.AGO to get all the " &
"files that were not VERIFIED"
01660
01670 PRINT TAB(15,01); "The user will be asked to input:"
01680 PRINT TAB(16,05); "(1) The name of the directory XXXXXX{.DIR}"
01690 PRINT TAB(17,10); "filnam default=AMOS; ext default=.DIR"
01700 PRINT TAB(18,05); "(2) The logical device on the update system "
01710 PRINT TAB(19,10); "(e.g. PHG0:) (default=DSK0:)"
01720 PRINT TAB(20,15); "(That's Pretty Humongeous Drive 0)"
01730
01740 PRINT TAB(22,01);
01750 STOP
01760
01770 ! Abort if VERIFY.LIT doesn't exist
01780 LOOKUP "DSK0:VERIFY.LIT[1,4]", EXIST
01790 IF ( EXIST < 1 ) &
THEN PRINT TAB(09,10); "I can't work without "; &
"DSK0:VERIFY.LIT[1,4] - Sorry" &
: END
01800
01810 DIR'NAME: ! Get the name of the directory to be updated
01820 PRINT TAB(07,01); TAB(-1,10)
01830 PRINT TAB(07,01); "What is the directory to be updated? "; &
"(def filnam=AMOS) (def ext=.DIR) ";
01840 INPUT "", DIRNAM
01850 DIRNAM = UCS(DIRNAM)
01860 XCALL STRIP, DIRNAM
01870 IF ( LEN(DIRNAM) = 0 ) &
THEN DIRNAM = "AMOS.DIR"
01880 SPEC'END = INSTR(1,DIRNAM,".")
01890 IF ( SPEC'END = 0 ) &
THEN DIRNAM = DIRNAM + ".DIR"
01900 LOOKUP DIRNAM, EXIST
01910 IF ( EXIST < 1 ) &
THEN PRINT TAB(09,10); "I can't find "; DIRNAM &
: PRINT; CHR$(7) &
: STOP &
: GOTO DIR'NAME
01920
01930 FOREIGN'DEV: ! Get the foreign logical to copy from
01940 PRINT TAB(08,01); TAB(-1,10)
01950 PRINT TAB(09,01); "What is the Remote Logical Device to "; &
"copy from? (XXXNN:) (def=DSK0:)";
01960 INPUT "", REM'DEV
01970 REM'DEV = UCS(REM'DEV) ! Just in case
01980 XCALL STRIP, REM'DEV ! Strip trailing spaces
01990 IF ( LEN(REM'DEV) = 0 ) &
THEN REM'DEV = "DSK0:"
02000 IF ( 0 = INSTR(1,REM'DEV,":") ) &
THEN PRINT; CHR$(7) &
: PRINT TAB(13,10); "YOU NEED A COLON (:)" &
: STOP &
: GOTO FOREIGN'DEV
02010
02020 ! Check to see if any name conflicts
02030 DATA VERIFY.LST,GETREV.AGO,UTGRP3.BAS,UTGRP3.RUN,UTGRP1.CMD
02040
02050 FOR COUNTER = 1 TO 5 ! Conflict loop
02060 READ FILNAM
02070 LOOKUP FILNAM, EXIST
02080 IF ( EXIST <> 0 ) &
THEN OVER'WRITE = OVER'WRITE + FILNAM + ", "
02090 NEXT COUNTER
02100
02110 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? (Y/N) (DEF=N)"; &
: INPUT ""; CONTINUE &
: IF ( UCS(CONTINUE) <> "Y" ) &
THEN END
02120
02130 PHASE1:
02140 PRINT TAB(10,01); TAB(-1,10)
02150 PRINT; "Phase 1 of GETREV - Create necessary files"
02160 OPEN #1, "UTGRP1.CMD", OUTPUT
02170 PRINT #1; "; UTGRP1.CMD - PHASE 1 OF GETREV"
02180 PRINT #1
02190 PRINT #1; "; COMPILE THE BASIC FILES"
02200 PRINT #1; "COMPIL UTGRP3.BAS"
02210 PRINT #1
02220 PRINT #1; ":< Phase 2 of GETREV - VERIFY/F "; DIRNAM
02230 PRINT #1; ">"
02240 PRINT #1; "VERIFY/F "; DIRNAM
02250 PRINT #1
02260 PRINT #1; ":R"
02270 PRINT #1; "RUN UTGRP3"
02280 PRINT #1
02290 PRINT #1; ":S"
02300 PRINT #1; "ERASE UTGRP3.*,UTGRP1.CMD"
02310 PRINT #1
02320 PRINT #1; ":R"
02330 PRINT #1; "XY 20 1"
02340 PRINT #1; ":<You are now ready to AUTOLOG the update system"
02350 PRINT #1
02360 PRINT #1; "I hope that GETREV is useful to you - Dave Barrow"
02370 PRINT #1; ">"
02380 CLOSE #1
02390
02400 ! PHASE 3 takes VERIFY.LST, eliminates those that are "VERIFIED"
02410 ! and outputs the others into GETREV.AGO
02420
02430 OPEN #3, "UTGRP3.BAS", OUTPUT
02440 PRINT #3; "! UTGRP3.BAS - PHASE 3 OF GETREV"
02450 PRINT #3; "! Takes the VERIFY.LST and prints the "; &
"not 'VERIFIED' files to GETREV.AGO"
02460 PRINT #3
02470 PRINT #3; "MAP1 COUNTER,F,6,0 ! Counts VERIFY lines"
02480 PRINT #3; "MAP1 DA'DT'TIM,S,45 ! Gets from XCALL ODTIM"
02490 PRINT #3; "MAP1 FIL'SPEC,S,26 ! File specification"
02500 PRINT #3; "MAP1 FIND'POS,F,6,0 ! INSTR Answer"
02510 PRINT #3; "MAP1 GET'COUNT,F,6,0 ! #/files in GETREV.AGO"
02520 PRINT #3; "MAP1 INLINE,S,80 ! Holds a line from VERIFY"
02530 PRINT #3
02540 PRINT #3; " PRINT; "; Q$; " Phase 3 of GETREV - "; &
"Skip the 'VERIFIED' files"; Q$
02550 PRINT #3; " PRINT; "; Q$; " List the rest in "; &
"an AUTOLOG .AGO file to get 'em"; Q$
02560 PRINT #3
02570 PRINT #3; " OPEN #3, "; Q$; "VERIFY.LST"; Q$; ", INPUT"; &
" ! Opens the listing from VERIFY"
02580 PRINT #3
02590 PRINT #3; " OPEN #4, "; Q$; "GETREV.AGO"; Q$; ", OUTPUT"; &
" ! Creates the AUTOLOG command file"
02600 PRINT #3; " PRINT #4; "; Q$; "; GETREV.AGO - "; &
"Produced by GETREV.RUN from "; &
"the "; DIRNAM; " directory"; Q$
02610 PRINT #3; " XCALL ODTIM, DA'DT'TIM,0,0,-1"
02620 PRINT #3; " PRINT #4; "; Q$; "; Produced on "; &
Q$; "; DA'DT'TIM"
02630 PRINT #3; " PRINT #4; "; Q$; "; This file "; &
"will be used by AUTOLOG to get these files "; &
"updated"; Q$
02640 PRINT #3; " PRINT #4; "; Q$; ":T"; Q$
02650 PRINT #3
02660 PRINT #3; "PHASE3:"
02670 PRINT #3; " INPUT LINE #3, INLINE" ! Get a line from VERIFY.LST
02680 PRINT #3; " IF ( EOF(3) <> 0 ) &"
02690 PRINT #3; " THEN GOTO EXIT3";
02700 PRINT #3; " ! Check for End-of-File"
02710 PRINT #3; " COUNTER = COUNTER + 1"
02720 PRINT #3; " IF ( INLINE[1,1] = SPACE(1) )"; &
" &"
02730 PRINT #3; " THEN GOTO EXIT3"; &
" ! Check for blank line"
02740 PRINT #3; " IF ( INSTR(1,INLINE,"; Q$; &
"VERIFIED"; Q$; ") <> 0 ) &"
02750 PRINT #3; " THEN GOTO PHASE3 "; &
"! If you're good - you're good"
02760 PRINT #3; " ! Find the ] at end of the P,Pn"
02770 PRINT #3; " FIND'POS = INSTR(1,INLINE,"; Q$; "]"; Q$; ")"
02780 PRINT #3; " FIL'SPEC = INLINE[1,FIND'POS]"
02790 PRINT #3; " ! Assemble the first part of the get em line"
02800 PRINT #3; " PRINT #4; "; Q$; "REC "; Q$; "; FIL'SPEC; " &
Q$; "="; Q$; "; "; Q$; REM'DEV; Q$; "; ";
02810 PRINT #3; " ! Strip off the device"
02820 PRINT #3; " FIND'POS = INSTR(1,FIL'SPEC,"; Q$; ":"; Q$; ")"
02830 PRINT #3; " FIL'SPEC = FIL'SPEC[(FIND'POS+1), 26]"
02840 PRINT #3; " XCALL STRIP, FIL'SPEC"
02850 PRINT #3; " ! Finish the get em line"
02860 PRINT #3; " PRINT #4; FIL'SPEC"
02870 PRINT #3; " GET'COUNT = GET'COUNT + 1"
02880 PRINT #3; " GOTO PHASE3"
02890 PRINT #3
02900 PRINT #3; "EXIT3:"
02910 PRINT #3; " INPUT LINE #3, INLINE ! Get count "; &
"from VERIFY.LST"
02920 PRINT #3; " XCALL STRIP, INLINE"
02930 PRINT #3; " PRINT ! Skip a line"
02940 PRINT #3; " PRINT; "; Q$; "There were "; Q$; &
"; COUNTER; "; Q$; "files listed in the directory."; Q$
02950 PRINT #3; " PRINT ! Skip a line"
02960 PRINT #3; " PRINT; "; Q$; "VERIFY found "; Q$; "; INLINE"
02970 PRINT #3; " PRINT; "; Q$; "GETREV.AGO is ready to "; &
"get "; Q$; "; GET'COUNT; "; Q$; " of them."; Q$
02980 PRINT #3; " PRINT ! Skip a line"
02990 PRINT #3; " CLOSE #3"
03000 PRINT #3; " CLOSE #4"
03010 PRINT #3; " END"
03020 CLOSE #3
03030
03040 ! Now start working on it
03050 CHAIN "UTGRP1.CMD"
03060 END
03070
03080 !* ** *** END OF GETREV.BAS *** ** *