Cls
Print
Print " ******************************************************"
Print " *                                                    *"
Print " *                 Listing-Formatter                  *"
Print " *                                                    *"
Print " ******************************************************"
Print
Print " Atari-GfA-Basic / (c) 1986 by GfA Systemtechnik"
Print " written by Klaus Keller, Herdecke"
Print " Program Version 1.0(G) / 8.10.86(2/2/87)"
Print
Rem :----------------------------------------------
Rem : Printer parameters (for modification)
Input "Left margin position";L$
L=Val(L$)
If L=0 Then
  L=7
Endif
Input "Right margin posiion";R$
R=Val(R$)
If R=0 Then
  R=73
Endif
Input "Indentation";I$
I=Val(I$)
If I=0 Then
  I=10
Endif
Input "Number of lines per page";Zeilanzahl$
Zeilanzahl=Val(Zeilanzahl$)
If Zeilanzahl<63 Then
  Zeilanzahl=63
Endif
If Zeilanzahl=0 Then
  Zeilanzahl=66
Endif
Print
Rem :----------------------------------------------
Z=0
S=1
Print "Left margin =";L
Print "Right margin =";R
Print "Indentation =";I
Print "No. of lines per page =";Zeilanzahl
Print
Print "The program must be stored in ASCII format!"
Print
Input " Ready to Print (Y/N)";O$
If O$="N" Or O$="n" Then
  Run
Endif
Cls
Print
Print "Choose:"
Print "(Double-click on item, then click on the Cancel field)"
Do
  Fileselect "A:\*.*",Datei$,O$
  Exit If O$=""
  Datei$=Mid$(O$,4)
Loop
Print
Print "Name of Data program: ";Datei$
Open "i",#1,Datei$
If Eof(#1) Then
  Print "Data empty!"
  End
Endif
Line Input "Title for listing ";Name$
Line Input "Brief description of contents (Return if not required) ";Datum$
Gosub Seitenkopf
Frtsetzung:
Gosub Listing
If Eof(#1) Then
  Gosub Seitenende
  End
Else
  Goto Frtsetzung
Endif
Procedure Listing
  Line Input #1,Zeile$
  Zlnr=Zlnr+1
  Lprint Tab(L);Using "######",Zlnr*10;
  Leerzn=0
  While Mid$(Zeile$,Leerzn+1,1)=" "
    Leerzn=Leerzn+1
  Wend
  Zeile$=Mid$(Zeile$,Leerzn+1)
  Zeilentext:
  P=Len(Zeile$)
  If P=<R-I-L-Leerzn Then
    Goto Drucken
  Endif
  Gosub Abteilen
  Drucken:
  Lprint Tab(I+L+Leerzn);Left$(Zeile$,P)
  Z=Z+1
  Zeile$=Mid$(Zeile$,P+1)
  If Z=60 Then
    Gosub Seitenende
    Gosub Seitenkopf
  Endif
  If Len(Zeile$)>0 Then
    Goto Zeilentext
  Endif
Return
Procedure Abteilen
  P=R-I-L-Leerzn+1
  Repeat
    P=P-1
    C$=Mid$(Zeile$,P,1)
  Until P=0 Or C$=" " Or C$=":" Or C$="." Or C$="," Or C$="-" Or C$="!"
  If P=0 Then
    P=R-I-L-Leerzn+1
  Endif
Return
Procedure Seitenkopf
  If Eof(#1)=0 Or Len(Zeile$)>0 Then
    Lprint String$(2,10);
    Lprint Tab(L);Name$;
    Lprint String$(60-L-Len(Name$),32);
    If S=1 Then
      Lprint Datum$;
    Else
      Lprint "Seite  ";S;
    Endif
    S=S+1
    Lprint String$(4,10);
  Endif
Return
Procedure Seitenende
  If Z>0 Then
    Lprint String$(Zeilanzahl-Z-2,10)
    Z=0
  Endif
Return
