home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / log / hamsys / hamfiled.bas < prev    next >
BASIC Source File  |  1987-01-02  |  5KB  |  92 lines

  1. 10 'HAMFILED - Program to handle files
  2. 15 'CHANGE DATE - 1/1/87
  3. 20   J=1 :MRGQSO$="     "           ' RECORD NUMBER GOING OUT/MRG AFTER NUMBER
  4. 30 ONN=-1 : OFFF = 0   :MRGSW=OFFF
  5. 40  D3F1$="     "                             ' TO SET LENGTH FOR LSET COMM
  6. 50 OKSW = OFFF                                ' INITIALIZE MERGING NUMB SWITCH
  7. 60 DEF SEG = 64 : POKE 23,64              ' Set CAPS LOCK on
  8. 70 CLS
  9. 80 CLS:LOCATE 8,1:PRINT "Which drive do you want to use for the input file?"
  10. 90 O$=INKEY$ : IF O$="" GOTO 90                 ' WAIT FOR RESPONSE
  11. 100 IF O$ = "A" OR O$="B" THEN DR1$=O$+":" :GOTO 130 'DISKETTE A OR B
  12. 110 IF O$ = "C" OR O$="D" THEN DR1$=O$+":" :GOTO 130 'DRIVE C OR D
  13. 120 GOTO 80                                    ' NOT VALID DRIVE, RETRY
  14. 130 PRINT : PRINT "What drive do you want the output file on?"
  15. 140 O$=INKEY$ : IF O$="" GOTO 140                 ' WAIT FOR RESPONSE
  16. 150 IF O$ = "A" OR O$="B" THEN DR4$=O$+":" :GOTO 180 'DISKETTE A OR B
  17. 160 IF O$ = "C" OR O$="D" THEN DR4$=O$+":" :GOTO 180 'DRIVE C OR DR B
  18. 170 GOTO 130                                    ' NOT VALID DRIVE, RETRY
  19. 180 OPEN DR2$+"HAMLOG.DAT" AS 1 LEN=72
  20. 190 FIELD 1,5 AS DF1$,15 AS DUM$,10 AS DF6$,42 AS REST$
  21. 200 ' *** ROUTINE TO GET HEADER RECORD AND DISPLAY WHILE USER IS READING MSG
  22. 210 OPEN DR1$+"HAMHDR.DAT" AS 3 LEN=24
  23. 220 FIELD 3,4 AS A$,4 AS B$,8 AS C$,8 AS D$ : GET 3,1  ' SET HEADER RECORD FLD
  24. 230 NUMREC=CVS(A$)                                ' Get number of records
  25. 240 CLOSE 3                      ' MAKE FILE NUMBER AVAILABLE AS OUTPUT
  26. 250 PRINT:PRINT "Which drive do you want to use for the temporary file?"
  27. 260 O$=INKEY$ : IF O$="" GOTO 260                ' WAIT FOR RESPONSE
  28. 270 IF O$ = "A" OR O$="B" THEN DR2$=O$+":" :GOTO 300 'DISKETTE A OR B
  29. 280 IF O$ = "C" OR O$="D" THEN DR2$=O$+":" :GOTO 300 'DRIVE C OR D
  30. 290 GOTO 260                                    ' NOT VALID DRIVE, RETRY
  31. 300 OPEN DR2$+"HAMLOG.TMP" AS 3 LEN=72           ' OPEN TEMP OUTPUT
  32. 310 FIELD 3,5 AS D3F1$,15 AS DUM3$,10 AS D3F6$,42 AS REST3$
  33. 320 PRINT:PRINT "Do you want to merge a file (Y/N) ?"
  34. 330 O$=INKEY$ :IF O$="" GOTO 330
  35. 340 IF O$="N" OR O$="n" GOTO 480
  36. 350 PRINT:PRINT "Which drive do you want to use for the merging file?"
  37. 360 O$=INKEY$ : IF O$="" GOTO 360                ' WAIT FOR RESPONSE
  38. 370 IF O$ = "A" OR O$="B" THEN DR3$=O$+":" :GOTO 400 'DISKETTE A OR B
  39. 380 IF O$ = "C" OR O$="D" THEN DR3$=O$+":" :GOTO 400 'DRIVE C OR D
  40. 390 GOTO 360                                   ' NOT VALID DRIVE, RETRY
  41. 400 PRINT "WHAT QSO NUMBER SHOULD THIS BE MERGED AFTER? USE ENTER AFTER NUMBER."
  42. 410 INPUT O$: RSET MRGQSO$=O$ : MRGSW=ONN
  43. 420 OPEN DR3$+"HAMHDR.dat" AS 2 LEN=24
  44. 430 FIELD 2,4 AS A$,4 AS B$,8 AS C$,8 AS D$ : GET 3,1  ' SET HEADER RECORD FLD
  45. 440 GET 2,1:NUMMRG=CVS(A$)                             ' GET MRG HEADER FIELDS
  46. 450 CLOSE 2                                   ' CLOSE HEADER FILE
  47. 460 OPEN DR3$+"HAMLOG.DAT" AS 2 LEN=72  ' OPEN FILE MERGING IN
  48. 470 FIELD 2,5 AS D2F1$,15 AS DUM2$,10 AS D2F6$,42 AS REST2$
  49. 480 FOR K = 1 TO NUMREC                       ' GO THROUGH ENTIRE FILE
  50. 490 GET 1,K
  51. 500 IF DF1$=MRGQSO$ THEN OKSW = ONN       ' START MERGE AFTER THIS RECORD OUT
  52. 510 IF DF6$="          " AND DELSW=ONN GOTO 610 'DROP CONTINUATION RECORDS
  53. 520 IF DF6$="**********" THEN DELSW=ONN : GOTO 560  ' DROP RECORD
  54. 530 RSET D3F1$=DF1$:LSET DUM3$=DUM$:LSET D3F6$=DF6$:LSET REST3$=REST$
  55. 540 IF D3F6$="        " THEN LSET D3F1$="     "   'NO QSO NUMBER
  56. 550 PUT 3,J :DELSW=OFFF :J=J+1                ' PUT RECORD AND TURN OFF DELETE
  57. 560 IF MRGSW = OFFF OR OKSW=OFFF GOTO 610                  ' NO MERGING
  58. 570 L=L+1:IF L>NUMMRG THEN MRGSW=OFFF : GOTO 490    ' GOTTEN ALL OF THE RECORDS
  59. 580 GET 2,L
  60. 590 LSET D3F1$=D2F2$:LSET DUM3$=DUM2$:LSET D3F6$=D2F6$:LSET REST3$=REST2$
  61. 600 PUT 3,J:J=J+1:GOTO 570                    ' GET ALL MERGE FILE
  62. 610 NEXT
  63. 620 PRINT "FINISHED BUILDING THE FILE.  NOW I WILL COPY IT BACK"
  64. 630 CLOSE
  65. 640 IF DR4$=DR1$ THEN KILL DR1$+"HAMLOG.DAT" : KILL DR1$+"HAMHDR.DAT"
  66. 650 OPEN DR2$+"HAMLOG.TMP" AS 3 LEN=72 :' OPEN FILE TO COPY BACK
  67. 660 FIELD 3,5 AS QB$,67 AS BB$
  68. 670 OPEN DR4$+"HAMLOG.DAT" AS 1 LEN=72  ' OPEN FILE TO COPY BACK INTO
  69. 680 FIELD 1,5 AS QA$,67 AS AA$
  70. 690 GET 3,1: QSONUM=VAL(QB$)                   ' GET 1ST QSO IN FILE
  71. 700 LSET QA$=QB$ :LSET AA$=BB$ : PUT 1,1         ' TRANSFER 1ST RECORD
  72. 710 CC$=LEFT$(AA$,8)                        ' SET DATE IN HEADER RECORD
  73. 720 FOR J = 2 TO J-1 :GET 3,J
  74. 730 QSONUM=QSONUM+1 : RSET QA$=STR$(QSONUM)       ' INCREMENT QSO NUMBER
  75. 740 LSET AA$=BB$ : PUT 1,J
  76. 750 NEXT
  77. 760 ' ***
  78. 770 ' *  ROUTINE TO WRITE HEADER RECORD
  79. 780 ' ***
  80. 790 CLOSE 3
  81. 800 OPEN DR4$+"HAMHDR.DAT" AS 3 LEN=24
  82. 810 FIELD 3,4 AS A$,4 AS B$,8 AS C$,8 AS D$ : GET 3,1  ' SET HEADER RECORD FLD
  83. 820 LSET A$=MKS$(J-1):LSET B$=MKS$(QSONUM):LSET D$=LEFT$(AA$,8):LSET C$=CC$
  84. 830 PUT 3,1                                            ' WRITE HEADER
  85. 840 CLOSE
  86. 850 KILL DR2$+"HAMLOG.TMP"
  87. 860 IF O$="Y" OR O$="y" THEN KILL "B:HAMLOG.MRG" : KILL "B:HAMHDR.MRG"
  88. 870 RUN "MMENU
  89. Y TO CONTINUE"
  90. 747 O$=INKEY$ : IF O$="" GOTO 747                ' WAIT FOR RESPONSE
  91. 750 RUN "MMENU
  92.