10 REM check.bas 04.11.86 (C) H.J.Meyer Harsum
20 :
30 ON ERROR GOTO 1080
40 :
50 DEFINT c,s,w,x:DEFSNG e,z:WIDTH 90
60 bell$=CHR$(7):esc$=CHR$(27)
70 invon$=esc$+"p":invoff$=esc$+"q":REM invers an/aus
80 fehl$=bell$+esc$+"A"+esc$+"K"+CHR$(13):REM Zeile l|schen
90 :
100 REM Voreinstellung
110 DATA END:     REM Dateiname (bzw. end=Programm beenden)
120 DATA REM:     REM Remark is REM ( in Assembler = ; in Cobol = * usw.)
130 DATA M:       REM Ausgabe (M=Monitor/P=Printer/D=Disk)
140 DATA 40:      REM Zeilenl{nge (10-80)
150 DATA 0:       REM Startzeile (0-65534)
160 READ datei$,rmk$,ausgabe$,zlen$,start$
170 :
180 PRINT esc$"H"esc$"E";
190 :
200 PRINT:PRINT CHR$(150)STRING$(35,154)CHR$(156)
210 PRINT CHR$(149)" J O Y C E - C H E C K S U M M E R "CHR$(149)
220 PRINT CHR$(147)STRING$(35,154)CHR$(153)
230 PRINT invon$:FILES "m:*.ASC":PRINT:PRINT invoff$
240 suchdat$=FIND$ ("M:*.asc")
250 IF suchdat$<>""THEN datei$=LEFT$(suchdat$,8)
260 :
270 PRINT"Dateiname","<"datei$">",:INPUT in$
280 in$=UPPER$(in$):IF in$="" THEN in$=datei$
290 IF VAL(in$)<>0 OR LEN(in$)>8 THEN PRINT fehl$;:GOTO 270
300 IF in$="END" THEN PRINT:END
310 datei$=in$
320 :
330 PRINT"REM-Zeichen","<"rmk$">",:INPUT in$
340 IF in$="" THEN in$=rmk$
350 IF in$="NO" THEN in$=CHR$(255)
360 rmk$=in$
370 :
380 PRINT"Ausgabe","<"ausgabe$">",:INPUT in$
390 in$=UPPER$(in$):IF in$="" THEN in$=ausgabe$
400 wahl=INSTR("MPD",in$)
410 IF wahl=0 THEN PRINT fehl$;:GOTO 380
420 ausgabe$=in$
430 :
440 PRINT"Zeilenl{nge","<"zlen$">",:INPUT in$
450 IF in$="" THEN in$=zlen$
460 zlen=VAL(in$)
470 IF zlen<10 OR zlen>80 THEN PRINT fehl$;:GOTO 440
480 zlen$=in$
490 :
500 PRINT"Startzeile","<"start$">",:INPUT in$
510 IF in$="" THEN in$=start$
520 erste=VAL(in$)
530 IF erste<0 OR erste>65534! THEN PRINT fehl$;:GOTO 500
540 start$=in$
550 :
560 datnam$="m:"+datei$+".ASC"
570 prnnam$="a:"+datei$+".PRN"
580 PRINT:OPEN"I",1,datnam$
590 PRINT"LISTING >"datei$"<, REMARK = >"rmk$"<.":PRINT
600 :
610 IF wahl<>2 THEN 650
620 LPRINT esc$"l"CHR$(10);esc$"M";
630 LPRINT "LISTING >"datei$"<, REMARK = >"rmk$"<.":LPRINT
640 :
650 IF wahl<>3 THEN 690
660 OPEN"O",2,prnnam$
670 PRINT #2,"LISTING >";datei$;"<, REMARK = >";rmk$;"<.":PRINT #2," "
680 :
690 IF EOF(1) THEN GOTO 1060
700   LINE INPUT #1,zeile$
710   IF VAL(zeile$)<erste THEN 690
720   :
730   x=INSTR(zeile$,SPACE$(2)):IF x=0 THEN 760
740   MID$(zeile$,x,1)=".":GOTO 730
750   :
760   x=INSTR(zeile$,rmk$+" ")
770   IF x=0 THEN clen=LEN(zeile$):ELSE clen=x+LEN(rmk$)-1
780   summe=0
790   FOR x=1 TO clen
800     summe=(summe+(ASC(MID$(zeile$,x,1))AND 127)*x)MOD 99
810   NEXT
820   druck$=zeile$
830   :
840   IF wahl<>1 THEN 900
850   PRINT USING"<##> ";summe;
860   teil$=LEFT$(druck$,zlen):PRINT teil$
870   druck$=MID$(druck$,zlen+1)
880   IF LEN(druck$)>0 THEN PRINT SPACE$(5);:GOTO 860
890   :
900   IF wahl<>2 THEN 970
910   PRINT USING"< ##### >";VAL(druck$);
920   LPRINT USING"<##> ";summe;
930   teil$=LEFT$(druck$,zlen):LPRINT teil$
940   druck$=MID$(druck$,zlen+1)
950   IF LEN(druck$)>0 THEN LPRINT SPACE$(5);:GOTO 930
960   :
970   IF wahl<>3 THEN 1040
980   PRINT USING"< ##### >";VAL(druck$);
990   PRINT #2,USING"<##> ";summe;
1000   teil$=LEFT$(druck$,zlen):PRINT #2,teil$
1010   druck$=MID$(druck$,zlen+1)
1020   IF LEN(druck$)>0 THEN PRINT #2,SPACE$(5);:GOTO 1000
1030   :
1040   IF INKEY$=CHR$(8) THEN GOTO 1060
1050 GOTO 690
1060 CLOSE:PRINT:GOTO 200
1070 :
1080 REM Fehlerbehandlung
1090 fehler$=" Fehler Nr."+STR$(ERR)+" in Zeile Nr."+STR$(ERL)+". "
1100 IF ERR=53 THEN fehler$=" Datei nicht vorhanden. "
1110 IF ERL=230 THEN fehler$=" Keine ASCII-Datei vorhanden. "
1120 CLOSE:PRINT invon$;fehler$;invoff$;bell$:PRINT
1130 IF ERL=230 THEN RESUME 270 ELSE RESUME 200
SCII-Datei vorhand