10 CLEAR
20 '**********************************************************************
30 '**                      PROGRAM NAME EZLINK                         **
40 '**                      BY Robert R. Stephens                       **
50 '**                      8200B Ptarmigan Ave.                        **
60 '**                      Gillette,Wy 82716                           **
70 '**                      PH 307-686-1286                             **
80 '**********************************************************************
90 ' THIS PROGRAM WILL BUILD ,EDIT ,PRINT AND SAVE AN ASCII FILE FOR
100 ' TRANSMISSION VIA EASYLINK.
110 DIM A$(200),DA$(80):DEFINT D,X,P
120 ON ERROR GOTO 1030:CLS:B$=STRING$(60,"*")
130 FLAG=0
140 B$=STRING$(60,"*"):PRINT @ 80*2+10,B$
150 FOR K=10 TO 69 STEP 59:FOR K1=3 TO 8:PRINT @ 80*K1+K,"*";:NEXT K1,K
160 PRINT @ 80*9+10,B$
170 PRINT @ 80*4+27," (1) BUILD AN EZLINK FILE";:PRINT @ 80*5+27," (2) REVIEW AN EZLINK FILE ";:PRINT @ 80*6+27," (3) EDIT AN EZLINK FILE";:PRINT @ 80*7+27," (4) QUIT";:PRINT @ 80*12+15," WHAT IS YOUR CHOICE (1-4)";:INPUT C$
180 C=VAL(C$):IF C<1 OR C>4 THEN 170
190 PRINT CHR$(15)
200 CLS:ON C GOTO 210,580,730,1010
210 'INPUT DATA IN STRING ARRAY A$
220 PAGE=1
230 PRINT "TYPE 'END' AT THE BEGINING OF ANY NEW LINE TO STOP"
240 PRINT @ (21,1),STRING$(78,"-"):PRINT @ (22,4),"FILE BUILD":PRINT @ (22,19),"PAGE:":PRINT @ (22,30),"ROW:":PRINT @ (22,45),"COL:":PRINT @ (22,58),"ARRAY ELEMENT:"
250 D=1:A$(D)=""
260 XX=4
270 PRINT @ (XX,1),STRING$(78," ")
280 FOR XZ=1 TO 78:DA$(XZ)=CHR$(0):NEXT XZ
290 XZ=1:A$(D)=""
300 IF XZ>=78 THEN 370
310 PRINT @ (22,24),PAGE:PRINT @ (22,34),XX-3:PRINT @ (22,49),XZ:PRINT @ (22,73),D
320 DA$(XZ)=INKEY$:PRINT @ (XX,XZ+1),CHR$(143):IF DA$(XZ)="" THEN 320
330 IF DA$(XZ)=CHR$(8) THEN 270
340 IF DA$(XZ)=CHR$(13) THEN 370
350 PRINT @ (XX,XZ+1),DA$(XZ)
360 XZ=XZ+1:GOTO 300
370 FOR XZ=1 TO 78:A$(D)=A$(D)+DA$(XZ):NEXT XZ
380 XX=XX+1
390 IF XX=20 THEN 400 ELSE 410
400 PAGE=PAGE+1:FOR XX=4 TO 19:PRINT @ (XX,1),STRING$(78," "):NEXT XX:GOTO 260
410 IF LEFT$(A$(D),3)="END" THEN 430 ELSE  IF LEFT$(A$(D),3)<>"END" THEN D=D+1:GOTO 280
420 'SAVE A FILE
430 CLS:PRINT @ (2,10),"FILE OPTIONS:(S)AVE ,(E)DIT ,OR (Q)UIT) ";:INPUT ANS$:IF ANS$="" THEN 430 ELSE IF ANS$="S" THEN 450 ELSE IF ANS$="E" THEN 730 ELSE IF ANS$="Q" THEN 1010 ELSE 450
440 REM
450  D=1
460 LINE INPUT "TYPE IN THE FILENAME (6 CHARACTERS OR LESS)  ";F$
470 IF F$="" THEN 460 ELSE 480
480 OPEN "O",1,F$
490 IF A$(D)="END" THEN 550
500 IF A$(D)="" THEN 550
510 PRINT #1,A$(D)
520 PRINT TAB(1);A$(D)
530 D=D+1
540 GOTO 490
550 CLOSE 1
560 FOR DLAY=1 TO 1000:NEXT DLAY
570 CLS:PRINT @ 80*3+15,"ENTER 'Q' TO QUIT ANY OTHER LETTER WILL CONTINUE";:INPUT XA$:IF XA$="Q" THEN 1010
580 'REVIEW A FILE
590 CLS
600 LINE INPUT "TYPE IN THE FILE NAME   ";F$
610 IF F$="Q" THEN 1010
620 D=1
630 OPEN "I",1,F$
640 IF EOF(1) THEN 690
650 INPUT # 1,A$(D)
660 PRINT A$(D)
670 D=D+1
680 GOTO 640
690 CLOSE 1
700 PRINT "PRESS ANY KEY TO CONTINUE"
710 ZAN$=INKEY$:IF ZAN$="" THEN 710 ELSE 720
720 IF FLAG=1 THEN 860
730 'EDIT OR REVIEW THE FILE
740 D=1
750 CLS:PRINT @ 80*10+5,"DO YOU WANT TO (R)EVIEW THE FILE OR (E)DIT THE FILE  OR (Q)UIT";:INPUT AN$:IF AN$="R" THEN 760 ELSE IF AN$="E" THEN 840 ELSE IF AN$="Q" THEN 1010 ELSE 760
760 CLS:PRINT" PRESS <SHIFT> @ TO STOP SCROLLING AND ANY BUTTON TO CONTINUE";:FOR DLAY=1 TO 1000:NEXT DLAY
770 IF A$(D)="" THEN 820
780 PRINT A$(D)
790 LPRINT A$(D)
800 D=D+1
810 GOTO 770
820 REM
830 CLS:PRINT @ 80*3,"DO YOU WANT TO SAVE THIS FILE";:INPUT KA$:IF KA$="Y" THEN 430 ELSE IF KA$="N" THEN 850
840 FLAG=1:GOTO 600
850 FOR D=1 TO EOF(1):PRINT A$(D):NEXT D
860 REM
870 PRINT "WHICH DATA LINE WOULD YOU LIKE TO EDIT";:INPUT D
880 CLS:PRINT "ENTER THE EDITED LINE"
890 PRINT "        "
900 INPUT "        ";A$(D)
910 CLS
920 PRINT @ 80*5+10,"DO YOU WANT TO CHANGE ANOTHER PIECE OF DATA  (Y/N)";:INPUT KKA$:IF KKA$="Y" THEN 850 ELSE 430
930 END
940 'BUILD HEADER FILE
950 D=1
960 PRINT @ 80*3+30,"HEADER FILE";
970 PRINT:PRINT
980 LINE INPUT A$(D)
990 IF A$(D)="END" THEN 430 ELSE IF A$(D)<>"END" THEN D=D+1:GOTO 980
1000 END
1010 CLS:PRINT CHR$(14):PRINT @ 80*9+25," SCOTTIE BEAM ME  UP.. THERE IS NO INTELLIGENT LIFE ON THIS PLANET....BYE...BYE ":FOR DLAY=1 TO 500:NEXT DLAY
1020 END
1030 CLS:PRINT @ 80*3+15,"**************** WARNING ***************";:PRINT @ 80*7+22," (1) RETURN TO MAIN MENU";:PRINT @80*8+22," (2) RETURN TO REVIEW/EDIT";
1040 PRINT @ 80*10+15,"THE ERROR OCCURED IN LINE NUMBER ";ERL
1050 IF ERR<>0 THEN 1060 ELSE 1070
1060 PRINT @ 80*11+15,"THE ERROR WAS 'BASIC' ERROR NUMBER ";ERR:GOTO 1080
1070 PRINT @ 80*11+15,"THE ERROR WAS 'TRSDOS' ERROR NUMBER ";ERRS$
1080 PRINT @ 80*12+15,"REFER TO APPENDIX D FOR A LISTING OF ERROR CODES AND THEIR MEANINGS";
1090 PRINT @ 80*15+15,"**************** WARNING ***************";
1100 PRINT @ 80*17+15,"WHAT IS YOUR CHOICE";:INPUT Q$:Q=VAL(Q$):IF Q<1 OR Q>2 THEN 1030
1110 ON Q GOTO 120,750
1120 'ADD TWO ZEROES TO EACH TOTAL
1130 L$=STR$(L):M$=STR$(M):O$=STR$(O)
1140 L$=L$+"00":M$=M$+"00":O$=O$+"00"
1150 RETURN
1160 'CHECK FOR GROSS-TARE=NET
1170 IF VAL(MID$(A$(D),22,6))-VAL(MID$(A$(D),36,5))<>VAL(MID$(A$(D),48,6)) THEN 1180 ELSE RETURN
1180 PRINT "ARITHEMATIC ERROR IN LINE NUMBER  "D
1190 LPRINT "ARITHEMATIC ERROR IN LINE "D; A$(D)
1200 A$(D)=""
1210 D=D-1
1220 RETURN
