$!----------------------------------------------------------------------------+ $! ACCESSES_DAT.COM - Delete or modify records in ACCESSES.DAT file | $!----------------------------------------------------------------------------+ $! $ SAVERIFY = 'F$VERIFY(0)' ! Save and turn off verification $ ON ERROR THEN GOTO DONE ! Just close the file and exit on error $ ON CONTROL_Y THEN GOTO DONE ! Close the file if we abort, too $ SAY = "WRITE SYS$OUTPUT" ! Shorthand terminal writes $ CLOSE/NOLOG ACCESS_FILE ! Just in case we've already opened it $ OPEN/READ/WRITE/SHARE=WRITE/ERROR=DONE ACCESS_FILE ACCESSES.DAT $ THEKEY = P1 ! Can pass the key if you want $ SAY "The key is the / path to the file; access_odometer entries are" $ SAY "prefixed with //ODOMETER/ followed by the information in the link." $ SAY "" $ LOOKUP: $ IF THEKEY .EQS. "" THEN INQUIRE THEKEY "Access key to lookup [none]" $ IF THEKEY .EQS. "" THEN GOTO DONE $ READ/KEY="''THEKEY'"/MATCH=GE/NOLOCK/ERROR=DONE ACCESS_FILE ARECORD $ THEKEY = F$EXTRACT(0,100,ARECORD) $ ACCESSES = F$EXTRACT(100,10,ARECORD) $ VERSION = F$EXTRACT(110,10,ARECORD) $ SHOWKEY = F$EDIT(THEKEY,"TRIM") $ SAY "File (or odometer): " + SHOWKEY $ SAY "Number of accesses: " + ACCESSES $ SAY "Version of counter: " + VERSION $ SAY "" $ INQUIRE/NOPUN OPTION "Delete this record [No]? " $ IF OPTION THEN GOTO DELETE_RECORD $ INQUIRE/NOPUN OPTION "Change the numbers [No]? " $ IF OPTION THEN GOTO CHANGE_NUMBERS $ THEKEY = "" $ GOTO LOOKUP $! $ DELETE_RECORD: $ READ/KEY="''THEKEY'"/MATCH=EQ/ERROR=DONE/DELETE ACCESS_FILE ARECORD $ THEKEY = "" $ SAY "Record deleted." $ GOTO LOOKUP $! $ CHANGE_NUMBERS: $ NEW_RECORD = ARECORD $ INQUIRE NEW_ACCESSES "Number of accesses [''ACCESSES']" $ IF NEW_ACCESSES .EQS. "" THEN NEW_ACCESSES = ACCESSES $ NEW_RECORD[100,10] := 'F$FAO("!10ZL",F$INTEGER(NEW_ACCESSES))' $ INQUIRE NEW_VERSION "Version of counter [''VERSION']" $ IF NEW_VERSION .EQS. "" THEN NEW_VERSION = VERSION $ NEW_RECORD[110,10] := 'F$FAO("!10ZL",F$INTEGER(NEW_VERSION))' $ IF NEW_RECORD .EQS. ARECORD $ THEN SAY "No changes made - update aborted." $ THEKEY = "" $ GOTO LOOKUP $ ENDIF $ READ/KEY="''THEKEY'"/MATCH=EQ/ERROR=DONE ACCESS_FILE ARECORD $ WRITE/UPDATE/ERROR=DONE ACCESS_FILE NEW_RECORD $ SAY "Record updated." $ SAY "" $ GOTO LOOKUP $! $ DONE: $ CLOSE/NOLOG ACCESS_FILE ! Let's close the file $ EXIT 1 + 0*F$VERIFY(SAVERIFY) ! Exit and restore verify