10  REM*** BAEDP TIMESHARE BILLING
20  REM*** THIS PROGRAM LISTS AND EDITS DAILY FILES.
30  REM*** NUMERIC I.D.'S ARE CONVERTED TO STRING BEFORE LISTING.
40  FILES *
50  DIM F$[6],A$[26],N$[10],B$[72],X[3],A[43,3]
60  N$="0123456789"
70  A$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
80  PRINT "FILE";
90  INPUT F$
100  ASSIGN F$,1,R8
110  IF R8=0 THEN 140
120  PRINT "FILE ";F$;" STATUS= ";R8
130  STOP 
140  PRINT 
141  PRINT "RECORD NO. (0=DONE)"
150  INPUT N
160  IF N=0 THEN 1390
170  IF N >= 2 THEN 200
180  PRINT ">= 2, PLEASE."
190  GOTO 140
200  IF  END #1 THEN 220
210  GOTO 240
220  PRINT "NO SUCH RECORD."
230  GOTO 140
240  READ #1,N
250  IF TYP(-1)#3 AND TYP(-1)#4 THEN 280
260  PRINT "EMPTY RECORD."
270  GOTO 140
280  PRINT "1=LIST RECORD"
290  PRINT "2=ADD"
300  PRINT "3=DELETE"
310  INPUT G9
320  IF G9<1 OR G9>3 THEN 280
330  REM*** READ RECORD N INTO A ARRAY.
340  MAT A=ZER
350  FOR I=1 TO 43
360  READ #1;A[I,1],A[I,2],A[I,3]
370  IF TYP(-1)=3 OR TYP(-1)=4 THEN 390
380  NEXT I
390  REM*** GOSUB FOR LIST, ADD, OR DELETE.
400  GOSUB G9 OF 420,640,970
410  GOTO 140
420  REM*** THIS GOSUB LISTS RECORD N (DATA IS IN A ARRAY).
430  REM*** NUMERIC I.D.'S ARE CONVERTED BACK TO STRING.
440  REM***
450  FOR I1=1 TO 43
460  IF A[I1,1]=0 THEN 630
470  J1=A[I1,1]
480  J1=INT(J1/1000)
490  IF J1<1 OR J1>26 THEN 600
500  B$[1,1]=A$[J1,J1]
510  J2=A[I1,1]-J1*1000
520  X[1]=INT(J2/100)
530  X[2]=INT((J2-X[1]*100)/10)
540  X[3]=J2-X[1]*100-X[2]*10
550  FOR I2=1 TO 3
560  J3=X[I2]+1
570  B$[I2+1,I2+1]=N$[J3,J3]
580  NEXT I2
590  GOTO 610
600  B$="****"
610  PRINT B$;A[I1,2];A[I1,3];
620  NEXT I1
630  RETURN 
640  REM*** THIS GOSUB ADDS AN I.D., TIME, SPACE ENTRY TO RECORD N.
650  PRINT "PRIOR I.D.  'B' TO ADD AT BEGINNING OF RECORD."
660  INPUT B$
670  REM*** GOSUB TO CONVERT B$ TO B1 NUMERIC.
680  GOSUB 1170
690  IF Y8=1 THEN 650
700  REM*** B2=PRIOR NUMERIC I.D.
710  B2=B1
720  PRINT "NEW I.D."
730  INPUT B$
740  GOSUB 1170
750  IF Y8=1 THEN 720
760  PRINT "NEW TIME"
770  INPUT T1
780  PRINT "NEW SPACE"
790  INPUT S1
800  REM*** PUT DATA WITH ADDITION BACK IN RECORD N.
810  READ #1,N
820  IF B2>0 THEN 850
830  B2=999999.
840  PRINT #1;B1,T1,S1
850  FOR I1=1 TO 43
860  IF A[I1,1]=0 THEN 920
870  PRINT #1;A[I1,1],A[I1,2],A[I1,3]
880  IF B2#A[I1,1] THEN 910
890  PRINT #1;B1,T1,S1
900  B2=999999.
910  NEXT I1
920  IF B2=999999. THEN 950
930  PRINT "NO SUCH PRIOR I.D.  NO ADDITION MADE."
940  GOTO 960
950  PRINT "ADDITION COMPLETE."
960  RETURN 
970  REM*** THIS GOSUB DELETES AN  I.D., TIME, SPACE ENTRY FROM RECORD N.
980  PRINT "PRIOR I.D.  'B' TO DELETE FIRST ENTRY IN RECORD."
990  INPUT B$
1000  GOSUB 1170
1010  IF Y8=1 THEN 980
1020  READ #1,N
1030  FOR I1=1 TO 43
1040  IF A[I1,1]=0 THEN 1120
1050  IF I1#1 OR B1#0 THEN 1080
1060  B1=999999.
1070  GOTO 1110
1080  PRINT #1;A[I1,1],A[I1,2],A[I1,3]
1090  IF B1#A[I1,1] THEN 1110
1100  I1=I1+1
1105  GOTO 1060
1110  NEXT I1
1120  IF B1=999999. THEN 1150
1130  PRINT "NO SUCH PRIOR I.D.  NO DELETION MADE."
1140  GOTO 1160
1150  PRINT "DELETION COMPLETE."
1160  RETURN 
1170  REM*** THIS GOSUB CONVERTS I.D. B$ TO NUMERIC B1.
1180  Y8=B1=0
1190  IF B$="B" THEN 1380
1200  IF LEN(B$)=4 THEN 1240
1210  PRINT "'B' OR 4 CHARACTERS, PLEASE."
1220  Y8=1
1230  GOTO 1380
1240  FOR K1=1 TO 26
1250  IF B$[1,1]=A$[K1,K1] THEN 1300
1260  NEXT K1
1270  Y8=1
1280  PRINT "INVALID I.D. A000 THROUGH Z999, PLEASE."
1290  GOTO 1380
1300  B1=K1*1000
1310  FOR K2=2 TO 4
1320  FOR K1=1 TO 10
1330  IF B$[K2,K2]=N$[K1,K1] THEN 1360
1340  NEXT K1
1350  GOTO 1270
1360  B1=B1+(K1-1)*10^(4-K2)
1370  NEXT K2
1380  RETURN 
1390  END 
