home *** CD-ROM | disk | FTP | other *** search
- !
- ! simcvax.bas VAX BASIC V3.3
- !
- ! converts the index file SIMIBM.IDX into the
- ! easily read file SIMIBM.LST (for the entire list)
- ! or SIMIBM.LSTyymmdd (if the starting date is yymmdd)
- ! or SIMIBM.LSTsubstring (if using substring search)
- !
- !
- ! Gives the user the option to include in the list file only those
- ! files added to the index after a specified date or only those
- ! containing a given string.
- !
- ! Part of this program was translated from Dustin Fu's SIMCVT.FOR
- ! to VAX BASIC V3.3
- !
- ! New code/Updates by:
- ! Mark Harris
- ! Digital Equipment Corp
- ! Santa Clara, CA
- ! Internet: harris_ma@wr2for.dec.com
- ! 1/10/91 Added scan options
- ! 5/13/91 Fixed case sensitivity
- ! 6/1/91 Valid names for output file, misc aesthetics
- ! 7/1/91 Scan Monitor added
- ! 12/31/91 Timestamp
- ! 6/5/92 New scans, Memory for last search, etc
- !
- ! Original improvements by
- ! Don Chodrow
- ! Physics Department
- ! James Madison University
- ! Harrisonburg, VA 22807
- ! BITNET: FAC_CHOD@JMUVAX1
- ! INTERNET: dc@dirac.physics.jmu.edu
- !
- !
- ! This program will convert the file SIMIBM.IDX into a readable form,
- ! sending the output to the file SIMIBM.LST. Because it is written in
- ! BASIC instead of FORTRAN, there is no need to convert quotes to
- ! apostrophes.
- !
- ! This program may be loaded into the VAX BASIC environment and run, or
- ! it may be compiled and linked to produce an .exe file:
- !
- ! $ basic simcvax
- ! $ link simcvax
- ! $ run simcvax
- !
- searchfile$ = "SIMIBM"
- !
- !
- DIM #3, TS_M%(1%), &
- TS_D%(1%), &
- TS_Y%(1%)
- Open "SIMCVAX.DAT" as file 3%, &
- Organization VIRTUAL FIXED, &
- Access MODIFY
- !
- If TS_M%(1)=0% Then
- TS_D%(1)=1%
- TS_Y%(1)=70%
- TS_M%(1)=1%
- End If
- !
- SAVE_D%=TS_D%(1)
- SAVE_Y%=TS_Y%(1)
- SAVE_M%=TS_M%(1)
- !
- ! These above will be the last run's values...
- !
- !TS_D%(1)=VAL(LEFT(DATE$(0),2%))
- !TS_Y%(1)=VAL(MID(DATE$(0),8%,2%))
- !TS_M%(1)=(pos("JanFebMarAprMayJunJulAugSepOctNovDec",MID(DATE$(0),4%,3%),1%)+2%)/3%
- !Close 3%
- ! Now we have the SAVE_* values above as the date of LAST access...
- !
- print searchfile$+" - Public Domain and shareware listing as of ";date$(0)
- print
- !
- !
- print "Do you wish to locate a specific file or files with their FILENAME"
- input "or Description containing a substring <Y/N, Default:N>",yesno$
- yesno$ = left$(edit$(yesno$,32),1)
- substring$=""
- yesno$="N" unless yesno$="Y"
- !
- while substring$="" and yesno$="Y"
- input "Substring to locate ", substring$
- next
- !
- mask_substring$=""
- For I%=1% TO len(substring$)
- ATMP$=MID(edit$(substring$,32%),I%,1)
- ATMP%=ascii(ATMP$)
- mask_substring$=mask_substring$+ATMP$ &
- IF (ATMP%>=65% and ATMP%<=90%) or &
- (ATMP%>=48% and ATMP%<=57%)
- Next I%
- ! mask_substring$ Returned
- ! Valid Characters are A-Z,1-9
- !
- print "Do you want to list only those files added to the index"
- input "on or after a certain date <Y/N, Default:N>",yesno$
- yesno$ = left$(edit$(yesno$,32),1)
- starter$ = "0"
- if (yesno$ = "Y") then
- yr%=0
- while (yr% <70) or (yr% > 99)
- print "Enter the last 2 digits of the starting year ("; &
- NUM1$(Save_y%);"): ";
- input yr%
- yr%=save_y% if yr%=0%
- next
- month% = 0
- while (month% < 1) or (month% > 12)
- print "Enter the number of the starting month, 1 to 12 ("; &
- NUM1$(Save_M%);") :";
- input month%
- month%=Save_m% if month%=0%
- next
- day% = 0
- while (day% < 1) or (day% > 31) or ((month%=2) and (day%>29%))
- Print "Enter the starting day, 1 to 31 ("; &
- NUM1$(Save_D%);") :";
- input day%
- day%=Save_D% if day%=0%
- next
-
- starter$ = str$(yr%)
-
- if (month% < 10) then
- starter$=starter$ + "0"+str$(month%)
- else
- starter$ = starter$ + str$(month%)
- end if
-
- if (day% < 10) then
- starter$ = starter$ + "0" + str$(day%)
- else
- starter$ = starter$ + str$(day%)
- end if
- end if
-
- outfile$ = searchfile$+".lst"
- if starter$ <> "0" then
- outfile$ = searchfile$+".lst" + starter$
- end if
- if substring$ <> "" then
- outfile$ = searchfile$+".lst" + left(mask_substring$,8)
- end if
-
- start% = val%(starter$)
- outfile$=edit$(outfile$,32)
-
- open searchfile$+".IDX" for input as file #1
- open outfile$ for output as file #2
- print
- print "File being created: ";outfile$
- margin #2,80%
- number_of_matches%=0%
- number_of_records%=0%
- latest_entry=0
- Scan_tick=1000.00
-
- print #2, ""+searchfile$+" PUBLIC DOMAIN AND SHAREWARE LISTING AS OF ";date$(0)
- if starter$ <> "0" then
- print #2, " "
- print #2, "This list contains files dated ";starter$;" or later."
- end if
- if substring$ <> "" then
- print #2, " "
- print #2, "This list contains files with names and/or descriptions"
- print #2, "containing the substring : ";substring$
- end if
- print #2," "
- print #2, "NOTE: Type B is Binary; Type A is ASCII"
-
- fs1$ = " " ! initialize
- dir1$ = " " ! initialize
-
- qq$ = "'LLLLLLLLLLLL 'L ####### ###### "
- qq$ = qq$ + "'LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL"
- !
- ! qq$ is the PRINT USING format string
- !
-
- when error use closer ! terminate program when end of file #1 is reached
-
- while 1 = 1 ! "endless" loop, terminated by end of file #1 "error"
- linput #1, rawdata$
- C1%=POS(RAWDATA$,",",1%)
- C2%=POS(RAWDATA$,",",C1%+1%)
- C3%=POS(RAWDATA$,",",C2%+1%)
- C4%=POS(RAWDATA$,",",C3%+1%)
- C5%=POS(RAWDATA$,",",C4%+1%)
- C6%=POS(RAWDATA$,",",C5%+1%)
- C7%=POS(RAWDATA$,",",C6%+1%)
- DQ%=POS(RAWDATA$,'"',C7%+2%)
- !
- fs2$=MID(RAWDATA$,2%,C1%-3%)
- dir2$=MID(RAWDATA$,C1%+2%,C2%-C1%-3%)
- filnam$=MID(RAWDATA$,C2%+2%,C3%-C2%-3%)
- rev$=MID(RAWDATA$,C3%+1%,C4%-C3%-1%)
- file_length$=MID(RAWDATA$,C4%+1%,C5%-C4%-1%)
- bits$=MID(RAWDATA$,C5%+1%,C6%-C5%-1%)
- dt$=MID(RAWDATA$,C6%+1%,C7%-C6%-1%)
- descr$=MID(RAWDATA$,C7%+2%,DQ%-C7%-2%)
- ! We get as strings to allow for format errors
- rev=val(rev$)
- file_length=val(file_length$)
- bits%=val(bits$)
- dt=val(dt$)
- Number_of_records%=Number_of_records%+1
- if (Number_of_records%/Scan_tick) = INT(Number_of_records%/Scan_tick) THEN &
- PRINT Number_of_records%;"files searched. ";
- IF Number_of_matches%=0% then &
- MF$="No"
- ELSE
- MF$=NUM1$(Number_of_matches%)
- END IF
- PRINT MF$;" matches found, continuing..."
- END IF
- latest_entry=dt if dt > latest_entry
- if ((dt >= start%) and ( substring$="" )) or &
- (((start% <> 0%) and (substring$ <> "")) and &
- (dt>=start%) and &
- (pos(edit$(filnam$,32),edit$(substring$,32),1) or &
- pos(edit$(descr$,32),edit$(substring$,32),1))) or &
- ((pos(edit$(filnam$,32),edit$(substring$,32),1) or &
- pos(edit$(descr$,32),edit$(substring$,32),1)) and &
- start%=0) then
- if ((fs1$ <> fs2$) or (dir1$ <> dir2$)) then
- print #2," "
- print #2,"Directory ";fs2$;dir2$
- print #2," Filename Type Length Date Description"
- print #2,"=============================================="
- dir1$ = dir2$
- fs1$ = fs2$
- end if
-
- if (bits% = 8) then
- style$ = "B"
- else
- style$ = "A"
- end if
-
- print #2 using qq$ ; filnam$,style$,file_length,dt,descr$
- number_of_matches%=number_of_matches%+1%
- end if
- next ! end of "endless" loop
-
- end when
-
- handler closer
- if err = 11% then
- close #1
- close #2
- !
- end if
- end handler
- !print err,ert$(err)
- !
- ld$=num1$(latest_entry)
- mtmp%=val(mid(ld$,3%,2%))
- mtmp$=mid("JanFebMarAprMayJunJulAugSepOctNovDec",mtmp%*3%-2%,3%)
- dtmp$=mid(ld$,5%,2%)
- ytmp$=mID(ld$,1%,2%)
- print searchfile$;" has submissions through ";mtmp$;" ";dtmp$;", 19";ytmp$
- print "Of";Number_of_records%; &
- "entries, the number of Matches found is";Number_of_matches%
- !
- TS_D%(1)=val(dtmp$)
- TS_Y%(1)=val(ytmp$)
- TS_M%(1)=mtmp%
- !
- close #3
- end
-