home *** CD-ROM | disk | FTP | other *** search
/ PC-SIG Library 8 / PC-SIG Library CD-ROM (8th Edition) (1990-04).iso / 201_300 / disk0218 / phonelst.bas < prev    next >
Encoding:
BASIC Source File  |  1987-03-29  |  3.3 KB  |  103 lines

  1. 10 '     PROGRAM TO CREATE A PHONE LIST FROM AN ADDRESS MANAGER DATABASE FILE
  2. 30 '  
  3. 40 '     AN ADDRESS MANAGER DATABASE FILE HAS THE FOLLOWING FORMAT:
  4. 50 '             SIZE | ENTRY 1 | ENTRY 2 | ... | ENTRY N | <FF>
  5. 60 '        WHERE SIZE IS A 4 BYTE INTEGER AND EACH ENTRY HAS THE
  6. 70 '        FOLLOWING FORMAT:
  7. 80 '             <FF> NAME <CR> ADDRESS LINE 1 <CR> ADDRESS LINE 2 <CR>
  8. 90 '             ADDRESS LINE 3 <CR> AREA CODE <CR> PHONE PREFIX <CR>
  9. 100 '            LAST 4 DIGITS <CR> COMMENT LINE 1 <CR> COMMENT LINE 2
  10. 110 '       WHERE <FF> IS A FORM FEED BYTE AND <CR> IS A CARRIAGE RETURN BYTE
  11. 120 '  
  12. 130 '    THE ADDRESS MANAGER TREATS A DATABASE FILE AS A DIRECT ACCESS FILE
  13. 140 '    HAVING A RECORD LENGTH OF 512 BYTES.  THIS PROGRAM ACCESS THE FILE
  14. 150 '    64 BYTES AT A TIME FOR CONVENIENCE.
  15. 160 '------------------------------------------------------------------------
  16. 170 INPUT "Enter input database file:     ",FILE1$
  17. 180 OPEN FILE1$ AS #1 LEN=64
  18. 190 FIELD #1,64 AS B$
  19. 200 INPUT "Enter output phone list file:  ",FILE2$
  20. 210 OPEN FILE2$ FOR OUTPUT AS #2
  21. 220 IREC%=1
  22. 230 GET #1,IREC%
  23. 240 A$ = B$
  24. 250 IREC% = IREC% + 1
  25. 260 GET #1,IREC%
  26. 270 C$ = A$ + B$
  27. 280 '---------------------------COMPUTE THE FILE SIZE
  28. 290 SIZE = CVI( MID$( C$, 1, 2 ) )
  29. 300 IF SIZE < 0 THEN SIZE = SIZE + 65536
  30. 310 PRINT "DATABASE SIZE ";SIZE;" BYTES"
  31. 320 '        DEFINE THE FORM FEED CHARACTER, FF
  32. 330 FF$ = CHR$( 12 )
  33. 340 J% = INSTR(C$,FF$)
  34. 350 '        THE FF CHARACTER MUST BE THE 5TH CHARACTER IN FILE
  35. 360 IF J% <> 5 THEN PRINT "ILLEGAL FILE TYPE" : END
  36. 370 J% = J% + 1
  37. 380 '        DEFINE THE CARRIAGE RETURN CHARACTER, CR
  38. 390 CR$ = CHR$( 13 )
  39. 400 '---------------------------ENTRY OUTPUT LOOP
  40. 410 '---------------------------NAME
  41. 420 GOSUB 1000
  42. 430 K% = INSTR( J%, C$, CR$ )
  43. 440 IF J% >= SIZE THEN END
  44. 450 PERSON$ = MID$( C$, J%, K%-J% )
  45. 480 J% = K% + 1
  46. 490 '---------------------------ADDRESS LINE 1
  47. 500 GOSUB 1000
  48. 510 K% = INSTR( J%, C$, CR$ )
  49. 520 L$ = MID$( C$, J%, K%-J% )
  50. 550 J% = K% + 1
  51. 560 '---------------------------ADDRESS LINE 2
  52. 570 GOSUB 1000
  53. 580 K% = INSTR( J%, C$, CR$ )
  54. 590 L$ = MID$( C$, J%, K%-J% )
  55. 620 J% = K% + 1
  56. 630 '---------------------------ADDRESS LINE 3
  57. 640 GOSUB 1000
  58. 650 K% = INSTR( J%, C$, CR$ )
  59. 660 L$ = MID$( C$, J%, K%-J% )
  60. 690 J% = K% + 1
  61. 700 '---------------------------PHONE LINE
  62. 710 GOSUB 1000
  63. 720 K% = INSTR(J%,C$,CR$)
  64. 730 L1$ = MID$(C$,J%,K%-J%)
  65. 740 J%=K%+1
  66. 750 K% = INSTR(J%,C$,CR$)
  67. 760 L2$ = MID$(C$,J%,K%-J%)
  68. 770 J%=K%+1
  69. 780 K% = INSTR(J%,C$,CR$)
  70. 790 L3$ = MID$(C$,J%,K%-J%)
  71. 792 PERSON$ = PERSON$ + SPACE$( 40-LEN(PERSON$) )
  72. 794 PERSON$ = PERSON$ + "(" + L1$ + ")" + L2$ + "-" + L3$
  73. 800 PRINT PERSON$
  74. 810 PRINT #2,PERSON$
  75. 820 J% = K% + 1
  76. 830 '---------------------------COMMENT LINE 1
  77. 840 GOSUB 1000
  78. 850 K% = INSTR(J%,C$,CR$)
  79. 860 L$ = MID$(C$,J%,K%-J%)
  80. 890 J% = K% + 1
  81. 900 '---------------------------COMMENT LINE 2
  82. 910 GOSUB 1000
  83. 920 K% = INSTR(J%,C$,FF$)
  84. 930 L$ = MID$(C$,J%,K%-J%)
  85. 960 J% = K% + 1
  86. 970 GOTO 420
  87. 980 '---------------------------END OF LOOP
  88. 990 '  
  89. 1000 '---------------------INPUT BUFFER UPDATE ROUTINE
  90. 1010 IF J% <= 64 THEN RETURN
  91. 1020 J% = J% - 64 : SIZE = SIZE - 64
  92. 1030 A$ = B$
  93. 1040 IREC% = IREC% + 1
  94. 1050 ON ERROR GOTO 1100
  95. 1060 GET #1,IREC%
  96. 1070 ON ERROR GOTO 0
  97. 1080 C$ = A$ + B$
  98. 1090 RETURN
  99. 1100 '---------------------ERROR TRAPPING
  100. 1110 B$ = ""
  101. 1120 RESUME
  102. 
  103.