home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast.iso / filedocs / simcvax.bas < prev    next >
BASIC Source File  |  1994-03-04  |  8KB  |  279 lines

  1. !
  2. !  simcvax.bas  VAX BASIC V3.3
  3. !
  4. !  converts the index file SIMIBM.IDX into the
  5. !  easily read file SIMIBM.LST (for the entire list)
  6. !  or SIMIBM.LSTyymmdd (if the starting date is yymmdd)
  7. !  or SIMIBM.LSTsubstring (if using substring search)
  8. !
  9. !
  10. !  Gives the user the option to include in the list file only those
  11. !  files added to the index after a specified date or only those
  12. !  containing a given string.
  13. !
  14. !  Part of this program was translated from Dustin Fu's SIMCVT.FOR
  15. !  to VAX BASIC V3.3
  16. !
  17. !   New code/Updates by:
  18. !        Mark Harris
  19. !        Digital Equipment Corp
  20. !        Santa Clara, CA
  21. !        Internet:    harris_ma@wr2for.dec.com
  22. !        1/10/91        Added scan options
  23. !        5/13/91        Fixed case sensitivity
  24. !        6/1/91        Valid names for output file, misc aesthetics
  25. !        7/1/91        Scan Monitor added
  26. !        12/31/91    Timestamp
  27. !        6/5/92        New scans, Memory for last search, etc
  28. !
  29. !   Original improvements by
  30. !                     Don Chodrow
  31. !                     Physics Department
  32. !                     James Madison University
  33. !                     Harrisonburg, VA 22807
  34. !                     BITNET:      FAC_CHOD@JMUVAX1
  35. !                     INTERNET:    dc@dirac.physics.jmu.edu
  36. !
  37. !
  38. !  This program will convert the file SIMIBM.IDX into a readable form,
  39. !  sending the output to the file SIMIBM.LST.  Because it is written in
  40. !  BASIC instead of FORTRAN, there is no need to convert quotes to
  41. !  apostrophes.
  42. !
  43. !  This program may be loaded into the VAX BASIC environment and run, or
  44. !  it may be compiled and linked to produce an .exe file:
  45. !
  46. !           $ basic simcvax
  47. !           $ link simcvax
  48. !           $ run simcvax
  49. !
  50.    searchfile$ = "SIMIBM"
  51. !
  52. !
  53. DIM #3,        TS_M%(1%),    &
  54.         TS_D%(1%),    &
  55.         TS_Y%(1%)
  56. Open "SIMCVAX.DAT" as file 3%,     &
  57.         Organization VIRTUAL FIXED,    &
  58.         Access MODIFY
  59. !
  60. If TS_M%(1)=0% Then
  61.     TS_D%(1)=1%
  62.     TS_Y%(1)=70%
  63.     TS_M%(1)=1%
  64. End If
  65. !
  66. SAVE_D%=TS_D%(1)
  67. SAVE_Y%=TS_Y%(1)
  68. SAVE_M%=TS_M%(1)
  69. !
  70. ! These above will be the last run's values...
  71. !
  72. !TS_D%(1)=VAL(LEFT(DATE$(0),2%))
  73. !TS_Y%(1)=VAL(MID(DATE$(0),8%,2%))
  74. !TS_M%(1)=(pos("JanFebMarAprMayJunJulAugSepOctNovDec",MID(DATE$(0),4%,3%),1%)+2%)/3%
  75. !Close 3%
  76. ! Now we have the SAVE_* values above as the date of LAST access...
  77. !
  78. print searchfile$+" - Public Domain and shareware listing as of ";date$(0)
  79. print
  80. !
  81. !
  82. print "Do you wish to locate a specific file or files with their FILENAME"
  83. input "or Description containing a substring <Y/N, Default:N>",yesno$
  84. yesno$ = left$(edit$(yesno$,32),1)
  85. substring$=""
  86. yesno$="N" unless yesno$="Y"
  87. !
  88. while substring$="" and yesno$="Y"
  89. input "Substring to locate ", substring$
  90. next
  91. !
  92. mask_substring$=""
  93. For I%=1% TO len(substring$)
  94. ATMP$=MID(edit$(substring$,32%),I%,1)
  95. ATMP%=ascii(ATMP$)
  96. mask_substring$=mask_substring$+ATMP$    &
  97.     IF    (ATMP%>=65% and ATMP%<=90%) or    &
  98.         (ATMP%>=48% and ATMP%<=57%)
  99. Next I%
  100. ! mask_substring$ Returned
  101. ! Valid Characters are A-Z,1-9
  102. !
  103. print "Do you want to list only those files added to the index"
  104. input "on or after a certain date <Y/N, Default:N>",yesno$
  105. yesno$ = left$(edit$(yesno$,32),1)
  106. starter$ = "0"
  107. if (yesno$ = "Y") then
  108.    yr%=0
  109.    while (yr% <70) or (yr% > 99)
  110.     print "Enter the last 2 digits of the starting year (";    &
  111.         NUM1$(Save_y%);"): ";
  112.     input yr%
  113.     yr%=save_y% if yr%=0%
  114.    next
  115.    month% = 0
  116.    while (month% < 1) or (month% > 12)
  117.     print "Enter the number of the starting month, 1 to 12 (";    &
  118.         NUM1$(Save_M%);") :";
  119.     input month%
  120.     month%=Save_m% if month%=0%
  121.    next
  122.    day% = 0
  123.    while (day% < 1) or (day% > 31) or ((month%=2) and (day%>29%))
  124.     Print "Enter the starting day, 1 to 31 (";    &
  125.         NUM1$(Save_D%);") :";
  126.     input day%
  127.     day%=Save_D% if day%=0%
  128.    next
  129.  
  130.    starter$ = str$(yr%)
  131.  
  132.    if (month% < 10) then
  133.       starter$=starter$ + "0"+str$(month%)
  134.    else
  135.       starter$ = starter$ + str$(month%)
  136.    end if
  137.  
  138.    if (day% < 10) then
  139.       starter$ = starter$ + "0" + str$(day%)
  140.    else
  141.       starter$ = starter$ + str$(day%)
  142.    end if
  143. end if
  144.  
  145. outfile$ = searchfile$+".lst"
  146. if starter$ <> "0" then
  147.    outfile$ = searchfile$+".lst" + starter$
  148. end if
  149. if substring$ <> "" then
  150.    outfile$ = searchfile$+".lst" + left(mask_substring$,8)
  151. end if
  152.  
  153. start% = val%(starter$)
  154. outfile$=edit$(outfile$,32)
  155.  
  156. open searchfile$+".IDX" for input as file #1
  157. open outfile$ for output as file #2
  158. print
  159. print "File being created: ";outfile$
  160. margin #2,80%
  161. number_of_matches%=0%
  162. number_of_records%=0%
  163. latest_entry=0
  164. Scan_tick=1000.00
  165.  
  166. print #2, ""+searchfile$+" PUBLIC DOMAIN AND SHAREWARE LISTING AS OF ";date$(0)
  167. if starter$ <> "0" then
  168.    print #2, " "
  169.    print #2, "This list contains files dated ";starter$;" or later."
  170. end if
  171. if substring$ <> "" then
  172.    print #2, " "
  173.    print #2, "This list contains files with names and/or descriptions"
  174.    print #2, "containing the substring : ";substring$
  175. end if
  176. print #2," "
  177. print #2, "NOTE: Type B is Binary; Type A is ASCII"
  178.  
  179. fs1$ = " "      ! initialize
  180. dir1$ = " "     ! initialize
  181.  
  182. qq$ = "'LLLLLLLLLLLL 'L ####### ###### "
  183. qq$ = qq$ + "'LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL"
  184. !
  185. !  qq$ is the PRINT USING format string
  186. !
  187.  
  188. when error use closer  ! terminate program when end of file #1 is reached
  189.  
  190.   while 1 = 1  ! "endless" loop, terminated by end of file #1 "error"
  191.         linput #1, rawdata$
  192.         C1%=POS(RAWDATA$,",",1%)
  193.         C2%=POS(RAWDATA$,",",C1%+1%)
  194.         C3%=POS(RAWDATA$,",",C2%+1%)
  195.         C4%=POS(RAWDATA$,",",C3%+1%)
  196.         C5%=POS(RAWDATA$,",",C4%+1%)
  197.         C6%=POS(RAWDATA$,",",C5%+1%)
  198.         C7%=POS(RAWDATA$,",",C6%+1%)
  199.         DQ%=POS(RAWDATA$,'"',C7%+2%)
  200.         !
  201.         fs2$=MID(RAWDATA$,2%,C1%-3%)
  202.         dir2$=MID(RAWDATA$,C1%+2%,C2%-C1%-3%)
  203.         filnam$=MID(RAWDATA$,C2%+2%,C3%-C2%-3%)
  204.         rev$=MID(RAWDATA$,C3%+1%,C4%-C3%-1%)
  205.         file_length$=MID(RAWDATA$,C4%+1%,C5%-C4%-1%)
  206.         bits$=MID(RAWDATA$,C5%+1%,C6%-C5%-1%)
  207.         dt$=MID(RAWDATA$,C6%+1%,C7%-C6%-1%)
  208.         descr$=MID(RAWDATA$,C7%+2%,DQ%-C7%-2%)
  209.     ! We get as strings to allow for format errors
  210.     rev=val(rev$)
  211.     file_length=val(file_length$)
  212.     bits%=val(bits$)
  213.     dt=val(dt$)
  214.     Number_of_records%=Number_of_records%+1
  215.     if (Number_of_records%/Scan_tick) = INT(Number_of_records%/Scan_tick) THEN    &
  216.         PRINT Number_of_records%;"files searched. ";
  217.         IF Number_of_matches%=0% then    &
  218.             MF$="No"
  219.         ELSE
  220.             MF$=NUM1$(Number_of_matches%)
  221.         END IF
  222.         PRINT MF$;" matches found, continuing..."
  223.     END IF
  224.     latest_entry=dt if dt > latest_entry
  225.     if ((dt >= start%) and ( substring$="" )) or    &
  226.        (((start% <> 0%) and (substring$ <> "")) and    &
  227.         (dt>=start%) and     &
  228.     (pos(edit$(filnam$,32),edit$(substring$,32),1) or     &
  229.             pos(edit$(descr$,32),edit$(substring$,32),1))) or    &
  230.     ((pos(edit$(filnam$,32),edit$(substring$,32),1) or    &
  231.             pos(edit$(descr$,32),edit$(substring$,32),1)) and    &
  232.         start%=0) then
  233.       if ((fs1$ <> fs2$) or (dir1$ <> dir2$)) then
  234.           print #2," "
  235.           print #2,"Directory ";fs2$;dir2$
  236.           print #2," Filename   Type Length   Date    Description"
  237.           print #2,"=============================================="
  238.           dir1$ = dir2$
  239.           fs1$ = fs2$
  240.       end if
  241.  
  242.       if (bits% = 8) then
  243.          style$ = "B"
  244.       else
  245.          style$ = "A"
  246.       end if
  247.  
  248.       print #2 using qq$ ; filnam$,style$,file_length,dt,descr$
  249.       number_of_matches%=number_of_matches%+1%
  250.     end if
  251.   next  ! end of "endless" loop
  252.  
  253. end when
  254.  
  255. handler closer
  256.    if err = 11% then
  257.       close #1
  258.       close #2
  259.       !
  260.    end if
  261. end handler
  262. !print err,ert$(err)
  263. !
  264. ld$=num1$(latest_entry)
  265. mtmp%=val(mid(ld$,3%,2%))
  266. mtmp$=mid("JanFebMarAprMayJunJulAugSepOctNovDec",mtmp%*3%-2%,3%)
  267. dtmp$=mid(ld$,5%,2%)
  268. ytmp$=mID(ld$,1%,2%)
  269. print searchfile$;" has submissions through ";mtmp$;" ";dtmp$;", 19";ytmp$
  270. print         "Of";Number_of_records%;    &
  271.         "entries, the number of Matches found is";Number_of_matches%
  272. !
  273. TS_D%(1)=val(dtmp$)
  274. TS_Y%(1)=val(ytmp$)
  275. TS_M%(1)=mtmp%
  276. !
  277. close #3
  278. end
  279.