home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 June / SIMTEL_0692.cdr / msdos / filedocs / simcvax.bas < prev    next >
BASIC Source File  |  1991-12-30  |  7KB  |  249 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. !
  28. !   Original Improvements by
  29. !                     Don Chodrow
  30. !                     Physics Department
  31. !                     James Madison University
  32. !                     Harrisonburg, VA 22807
  33. !                     BITNET:      FAC_CHOD@JMUVAX1
  34. !                     INTERNET:    dc@dirac.physics.jmu.edu
  35. !
  36. !
  37. !  This program will convert the file SIMIBM.IDX into a readable form,
  38. !  sending the output to the file SIMIBM.LST.  Because it is written in
  39. !  BASIC instead of FORTRAN, there is no need to convert quotes to
  40. !  apostrophes.
  41. !
  42. !  This program may be loaded into the VAX BASIC environment and run, or
  43. !  it may be compiled and linked to produce an .exe file:
  44. !
  45. !           $ basic simcvax
  46. !           $ link simcvax
  47. !           $ run simcvax
  48. !
  49.    searchfile$ = "SIMIBM"
  50. !
  51. !
  52. DIM #1,        TS_M%(1%),    &
  53.         TS_D%(1%),    &
  54.         TS_Y%(1%)
  55. Open "SIMCVAX.DAT" as file 1%,     &
  56.         Organization VIRTUAL FIXED,    &
  57.         Access MODIFY
  58. !
  59. If TS_M%(1)=0% Then
  60.     TS_D%(1)=1%
  61.     TS_Y%(1)=70%
  62.     TS_M%(1)=1%
  63. End If
  64. !
  65. SAVE_D%=TS_D%(1)
  66. SAVE_Y%=TS_Y%(1)
  67. SAVE_M%=TS_M%(1)
  68. !
  69. ! These above will be the last run's values...
  70. !
  71. TS_D%(1)=VAL(LEFT(DATE$(0),2%))
  72. TS_Y%(1)=VAL(MID(DATE$(0),8%,2%))
  73. TS_M%(1)=(pos("JanFebMarAprMayJunJulAugSepOctNovDec",MID(DATE$(0),4%,3%),1%)+2%)/3%
  74. Close 1%
  75. ! Now we have the SAVE_* values above as the date of LAST access...
  76. !
  77. print searchfile$+" - Public Domain and shareware listing as of ";date$(0)
  78. print
  79. !
  80. !
  81. print "Do you wish to locate a specific file or files with their FILENAME"
  82. input "or Description containing a substring <Y/N, Default:N>",yesno$
  83. yesno$ = left$(edit$(yesno$,32),1)
  84. substring$=""
  85. yesno$="N" unless yesno$="Y"
  86. !
  87. while substring$="" and yesno$="Y"
  88. input "Substring to locate ", substring$
  89. next
  90. !
  91. mask_substring$=""
  92. For I%=1% TO len(substring$)
  93. ATMP$=MID(edit$(substring$,32%),I%,1)
  94. ATMP%=ascii(ATMP$)
  95. mask_substring$=mask_substring$+ATMP$    &
  96.     IF    (ATMP%>=65% and ATMP%<=90%) or    &
  97.         (ATMP%>=48% and ATMP%<=57%)
  98. Next I%
  99. ! mask_substring$ Returned
  100. ! Valid Characters are A-Z,1-9
  101. !
  102. print "Do you want to list only those files added to the index"
  103. input "after a certain date <Y/N, Default:N>",yesno$
  104. yesno$ = left$(edit$(yesno$,32),1)
  105. starter$ = "0"
  106. if (yesno$ = "Y") then
  107.    yr%=0
  108.    while (yr% <70) or (yr% > 99)
  109.     print "Enter the last 2 digits of the starting year (";    &
  110.         NUM1$(Save_y%);"): ";
  111.     input yr%
  112.     yr%=save_y% if yr%=0%
  113.    next
  114.    month% = 0
  115.    while (month% < 1) or (month% > 12)
  116.     print "Enter the number of the starting month, 1 to 12 (";    &
  117.         NUM1$(Save_M%);") :";
  118.     input month%
  119.     month%=Save_m% if month%=0%
  120.    next
  121.    day% = 0
  122.    while (day% < 1) or (day% > 31) or ((month%=2) and (day%>29%))
  123.     Print "Enter the starting day, 1 to 31 (";    &
  124.         NUM1$(Save_D%);") :";
  125.     input day%
  126.     day%=Save_D% if day%=0%
  127.    next
  128.  
  129.    starter$ = str$(yr%)
  130.  
  131.    if (month% < 10) then
  132.       starter$=starter$ + "0"+str$(month%)
  133.    else
  134.       starter$ = starter$ + str$(month%)
  135.    end if
  136.  
  137.    if (day% < 10) then
  138.       starter$ = starter$ + "0" + str$(day%)
  139.    else
  140.       starter$ = starter$ + str$(day%)
  141.    end if
  142. end if
  143.  
  144. outfile$ = searchfile$+".lst"
  145. if starter$ <> "0" then
  146.    outfile$ = searchfile$+".lst" + starter$
  147. end if
  148. if substring$ <> "" then
  149.    outfile$ = searchfile$+".lst" + left(mask_substring$,8)
  150. end if
  151.  
  152. start% = val%(starter$)
  153. outfile$=edit$(outfile$,32)
  154.  
  155. open searchfile$+".IDX" for input as file #1
  156. open outfile$ for output as file #2
  157. print
  158. print "File being created: ";outfile$
  159. margin #2,80%
  160. number_of_matches%=0%
  161. number_of_records%=0%
  162. latest_entry=0
  163. Scan_tick=1000.00
  164.  
  165. print #2, ""+searchfile$+" PUBLIC DOMAIN AND SHAREWARE LISTING AS OF ";date$(0)
  166. if starter$ <> "0" then
  167.    print #2, " "
  168.    print #2, "This list contains files dated ";starter$;" or later."
  169. end if
  170. if substring$ <> "" then
  171.    print #2, " "
  172.    print #2, "This list contains files with names and/or descriptions"
  173.    print #2, "containing the substring : ";substring$
  174. end if
  175. print #2," "
  176. print #2, "NOTE: Type B is Binary; Type A is ASCII"
  177.  
  178. fs1$ = " "      ! initialize
  179. dir1$ = " "     ! initialize
  180.  
  181. qq$ = "'LLLLLLLLLLLL 'L ####### ###### "
  182. qq$ = qq$ + "'LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL"
  183. !
  184. !  qq$ is the PRINT USING format string
  185. !
  186.  
  187. when error use closer  ! terminate program when end of file #1 is reached
  188.  
  189.   while 1 = 1  ! "endless" loop, terminated by end of file #1 "error"
  190.     input #1, fs2$,dir2$,filnam$,rev,lngth%,bits%,dt,descr$
  191.     Number_of_records%=Number_of_records%+1
  192.     if (Number_of_records%/Scan_tick) = INT(Number_of_records%/Scan_tick) THEN    &
  193.         PRINT Number_of_records%;"files searched. ";
  194.         IF Number_of_matches%=0% then    &
  195.             MF$="No"
  196.         ELSE
  197.             MF$=NUM1$(Number_of_matches%)
  198.         END IF
  199.         PRINT MF$;" matches found, continuing..."
  200.     END IF
  201.     latest_entry=dt if dt > latest_entry
  202.     if ((dt >= start%) and ( substring$="" )) or    &
  203.        (((start% <> 0%) and (substring$ <> "")) and    &
  204.         (dt>=start%) and     &
  205.     (pos(edit$(filnam$,32),edit$(substring$,32),1) or     &
  206.             pos(edit$(descr$,32),edit$(substring$,32),1))) or    &
  207.     ((pos(edit$(filnam$,32),edit$(substring$,32),1) or    &
  208.             pos(edit$(descr$,32),edit$(substring$,32),1)) and    &
  209.         start%=0) then
  210.       if ((fs1$ <> fs2$) or (dir1$ <> dir2$)) then
  211.           print #2," "
  212.           print #2,"Directory ";fs2$;dir2$
  213.           print #2," Filename   Type Length   Date    Description"
  214.           print #2,"=============================================="
  215.           dir1$ = dir2$
  216.           fs1$ = fs2$
  217.       end if
  218.  
  219.       if (bits% = 8) then
  220.          style$ = "B"
  221.       else
  222.          style$ = "A"
  223.       end if
  224.  
  225.       print #2 using qq$ ; filnam$,style$,lngth%,dt,descr$
  226.       number_of_matches%=number_of_matches%+1%
  227.     end if
  228.   next  ! end of "endless" loop
  229.  
  230. end when
  231.  
  232.  
  233. handler closer
  234.    if err = 11% then
  235.       close #1
  236.       close #2
  237.    end if
  238. end handler
  239. !
  240. ld$=num1$(latest_entry)
  241. mtmp%=val(mid(ld$,3%,2%))
  242. mtmp$=mid("JanFebMarAprMayJunJulAugSepOctNovDec",mtmp%*3%-2%,3%)
  243. dtmp$=mid(ld$,5%,2%)
  244. ytmp$=mID(ld$,1%,2%)
  245. print searchfile$;" has submissions through ";mtmp$;" ";dtmp$;", 19";ytmp$
  246. print         "Of";Number_of_records%;    &
  247.         "entries, the number of Matches found is";Number_of_matches%
  248. end
  249.