home *** CD-ROM | disk | FTP | other *** search
- 0010 // save "eingbsp.prg"
- 0020
- 0030 vorbereiten
- 0040 rahmen'zeichnen
- 0050 textvorgabe'einsetzen
- 0060 eingabe
- 0070
- 0080 PROC vorbereiten
- 0090 USE system
- 0110 DIM adresse$(1:200) OF 50
- 0120 RESTORE anfang
- 0130 READ anzahl# // Anzahl der Eingabefelder
- 0140 DIM zsl#(1:3,1:anzahl#) // Zeile, Spalte, Länge (zweidimensionales Feld)
- 0150 DIM marke$(1:4) OF 1 // Marken für Eingabefeld
- 0160 READ zsl#(,) // Die für diese Maske gültigen Positionierungsdaten für
- Zeile, Spalte und Länge des Eingabefeldes werden eingelesen.
- 0170
- 0180 anfang:
- 0190 DATA 7 // Anzahl der Eingabefelder
- 0200
- 0210 DATA 6,11,12,13,14,16,19 // Zeilen
- 0220 DATA 20,20,20,20,20,20,20 // Spalten
- 0230 DATA 4,30,30,30,30,30,50 // Feldlängen
- 0240
- 0250 marke$(1):="[" // Feldbegrenzung links
- 0260 marke$(2):="]" // Feldbegrenzung rechts
- 0270
- 0280 marke$(3):=" " // Löschen der
- 0290 marke$(4):=" " // Feldbegrenzungen
- 0300
- 0310 cursorspalte#:=1 // Cursorpositionierungsangabe für das Eingabefeld
- 0320 cursor'hoch$:=CHR$(0)+CHR$(72) // Zuweisung von ASCII-Codes zur Verbes-
- 0330 cursor'runter$:=""0""+"P" // serung der Lesbarkeit eines Programms.
- 0340 enter$:=""13"" // Die Zeilen 310 und 320 zeigen
- 0350 esc'taste$:=""27"" // alternative Schreibmöglichkeiten
- 0360 glocke$:=""7""
- 0370 fettschrift$:=""16""
- 0380 blinkschrift$:=""20""
- 0390 negativschrift$:=""18""
- 0400
- 0410 datum$:=DATE$(9:10)+"."+DATE$(6:7)+"."+DATE$(:4)
- 0411 // Der Zeichenkette datum$ werden Elemente der Systemfunktion DATE$
- 0412 // zugewiesen, so daß die deutsche Datumsform entsteht.
- 0420 ENDPROC vorbereiten
- 0430
- 0440 PROC eingabe
- 0450 //
- 0460 // zsl#(1,) Zeile
- 0470 // zsl#(2,) Spalte
- 0480 // zsl#(3,) Länge des Eingabefeldes
- 0490 //
- 0500 // adresse$() enthält die eingegebene Adresse.
- 0510 //
- 0520 USE system
- 0530 termchars(cursor'hoch$+cursor'runter$+enter$+esc'taste$)
- 0540
- 0550 // Die Eingabezeile kann verlassen werden durch Eingabe von
- 0560 // Cursor hoch, Cursor runter, Enter oder Escape.
- 0570
- 0580 letztes'feld#:=MAXINDEX(zsl#(,),2) // gibt Anzahl der vorh. Spalten
- 0590 adresse$():="" // Löschen der Adressfelder vor der nächsten Eingabe
- 0600
- 0610 feld#:=2 // Die Eingabemarke wird auf Feld 2 (Anrede) gesetzt.
- 0620 LOOP
- 0630 zeile#:=zsl#(1,feld#); spalte#:=zsl#(2,feld#); länge#:=zsl#(3,feld#)
- 0640 PRINT AT zeile#,spalte#+länge#+1: marke$(2)
- 0650 IF termchar$<>enter$ THEN inputpos(cursorspalte#)
- 0660 INPUT AT zeile#,spalte#,länge#: marke$(1): adresse$(feld#)
- 0670 CASE termchar$ OF
- 0680 WHEN cursor'hoch$
- 0690 cursorspalte#:=termpos#
- 0700 marke'löschen
- 0710 feld#:=feld#-1
- 0720 IF feld#<2 THEN feld#:=2 // obere Grenze: zweites Eigabefeld
- 0730 WHEN cursor'runter$
- 0740 cursorspalte#:=termpos#
- 0750 marke'löschen; feld#:=feld#+1
- 0760 IF feld#>letztes'feld# THEN feld#:=letztes'feld# // Eingabemarke
- bleibt in der letzten Zeile.
- 0770 WHEN enter$
- 0780 marke'löschen; feld#:=feld#+1
- 0790 IF feld#>letztes'feld# THEN feld#:=2 // springt nach RETURN auf die 2. Zeile
- 0800 OTHERWISE // Escape wurde gedrückt
- 0810 marke'löschen
- 0820 meldung("Programmausschnitt hier beendet!",esc'taste$)
- 0830 adresse'speichern
- 0840 EXIT
- 0850 ENDCASE
- 0860 ENDLOOP
- 0870
- 0880 termchars(enter$) // zurückschalten auf normalen Einschaltzustand
- 0890
- 0900 PROC marke'löschen
- 0910 PRINT AT zeile#,spalte#: marke$(3)
- 0920 PRINT AT zeile#,spalte#+länge#+1: marke$(4)
- 0930 ENDPROC marke'löschen
- 0940
- 0950 ENDPROC eingabe
- 0960
- 0970 PROC rahmen'zeichnen
- 0980 PAGE
- 0990 PRINT AT 1,1: "╔"+18*"═"+"╦"+40*"═"+"╦"+18*"═"+"╗"
- 1000 PRINT AT 2,1: "║"+18*" "+"║"+40*" "+"║"+18*" "+"║"
- 1010 PRINT AT 3,1: "║"+18*" "+"║"+40*" "+"║"+18*" "+"║"
- 1020 PRINT AT 4,1: "╠"+18*"═"+"╩"+40*"═"+"╩"+18*"═"+"╣"
- 1030 FOR zeile#:=5 TO 19 DO PRINT AT zeile#,1: "║"+78*" "+"║"
- 1040 PRINT AT 20,1: "╠"+25*"═"+"╦"+52*"═"+"╣"
- 1050 PRINT AT 21,1: "║"+25*" "+"║"+52*" "+"║"
- 1060 PRINT AT 22,1: "╚"+25*"═"+"╩"+52*"═"+"╝"
- 1070 ENDPROC rahmen'zeichnen
- 1080
- 1090 PROC textvorgabe'einsetzen
- 1100 PRINT AT 2,6: "Rechnungen"
- 1110 zentrieren(2,"FIRMENNAME")
- 1120 PRINT AT 2,66: "Vers. 1.00"
- 1130 PRINT AT 6,3: "Rechnungsnummer:"
- 1140 PRINT AT 6,52: "Datum :";datum$
- 1150 PRINT AT 7,52: "Uhrzeit :";TIME$
- 1160 PRINT AT 11,3: "Anrede :"
- 1170 PRINT AT 12,3: "Vorname :"
- 1180 PRINT AT 13,3: "Zuname :"
- 1190 PRINT AT 14,3: "Straße :"
- 1200 PRINT AT 16,3: "PLZ Wohnort :"
- 1210 PRINT AT 19,3: "Bemerkungen :"
- 1220 PRINT AT 21,3: "Datensatz-Nr. :"
- 1230 PRINT AT 21,34: negativschrift$+" Nach beendeter Einagbe <Esc> drücken."
- 1240 ENDPROC textvorgabe'einsetzen
- 1250
- 1260 PROC zentrieren(zeile#,inhalt$)
- 1270 spalte#:=INT((81-LEN(inhalt$))/2)
- 1280 PRINT AT zeile#,spalte#: inhalt$,
- 1290 ENDPROC zentrieren
- 1300
- 1310 PROC meldung(text$,taste$)
- 1320 PRINT AT 21,30: SPC$(49)
- 1330 PRINT AT 21,30: glocke$+fettschrift$+blinkschrift$+text$
- 1340 REPEAT
- 1350 antworttaste$:=KEY$
- 1360 UNTIL antworttaste$ IN taste$
- 1370 PRINT AT 21,30: SPC$(49)
- 1380 ENDPROC meldung
- 1390
- 1400 PROC adresse'speichern
- 1410 // Diese Prozedur muß noch mit Inhalt gefüllt werden. Sie wurde
- 1420 // hier aufgenommen, um den Programmausschnitt lauffähig zu machen.
- 1430 ENDPROC adresse'speichern