' ***************************************************************************
' * Nach der Umformung mit "ABC" mußte nur die Variable "JAHR" in "JAHR#"   *
' * geändert werden. An diesem Listing wurde nichts verändert, damit sofort *
' * erkannt wird wie "ABC" das Programm konvertiert hat.                    *  
' ***************************************************************************  
Dim UEBERS$(4) : Rem Zeile muß an Programmanfang
Dim EWT(12) : Rem Zeile muß an Programmanfang
Dim TAG$(7) : Rem Zeile muß an Programmanfang
Dim MOTAGE(12) : Rem Zeile muß an Programmanfang
Set Input 10,-1 : Rem ist für Input # und Line Input # erforderlich
Curs Off : Flash Off 
Rem  ********************************* 
Rem  *        Kalender V 1.0         * 
Rem  *     © 1992 by Henry König     * 
Rem  * Bornheide 71, 2000 Hamburg 53 * 
Rem  ********************************* 
Screen Open 1,640,256,4,Hires
' Wind Open 1WINDOW 1,"Kalender 1.00, © 1992 by Henry König",,0,1
Wind Open 1,0,0,(640/8)-1,(256/8)-1,3
Title Top "Kalender 1.00, © 1992 by Henry König"
Print 
Print 
JAHR#=0
While JAHR#<1900 or JAHR#>2000
   Input "Kalender von welchem Jahr: ";JAHR#
Wend 
Input "Ausgabe auf den Drucker j/n ";X$
If Upper$(X$)="J"
   GADR=4
End If 
UEBERS$(1)="Januar            Februar         März"
UEBERS$(2)="April             Mai             Juni"
UEBERS$(3)="Juli              August          September"
UEBERS$(4)="Oktober           November        Dezember"
For MONAT=1 To 12
   Read MOTAGE(MONAT)
Next MONAT
If JAHR#/4=Int(JAHR#/4)
   MOTAGE(2)=29 : Rem   ist ein Schaltjahr 
End If 
For I=1 To 7
   Read TAG$(I)
Next I
Rem Wochentag des 1.1. berechnen 
TAGE=Int(0.9799999+365.25*(JAHR#-1900))
EWT(1)=TAGE-Int((TAGE-1)/7)*7
Rem Wochentag von jeden Monat berechnen
For MONAT=2 To 12
   SUM=EWT(MONAT-1)+MOTAGE(MONAT-1)
   EWT(MONAT)=SUM-Int((SUM-1)/7)*7
Next MONAT
Rem Kalender ausgeben
Cls : Rem Farbe des letzen Paper-Befehls anfügen 
Print Space$(25);"Kalender ";JAHR#
Print 
If GADR=4 : Rem   Druckerausgabe 
   Open Out 4,"PRT:" : Rem   Drucker öffnen 
   Print #4,Space$(25);"Kalender ";JAHR#
   Print #4,
End If 
For MREIHE=1 To 4
   Print 
   Print 
   Print Space$(8);UEBERS$(MREIHE)
   Print 
   If GADR=4
      Print #4,
      Print #4,
      Print #4,Space$(8);UEBERS$(MREIHE)
      Print #4,
   End If 
   For REIHE=1 To 7
      Print TAG$(REIHE);
      If GADR=4
         Print #4,TAG$(REIHE);
      End If 
      For MSPALTE=1 To 3
         MONAT=3*(MREIHE-1)+MSPALTE
         For SPALTE=1 To 6
            DAT=SPALTE*7-6+REIHE-EWT(MONAT)
            If DAT<=0 or DAT>MOTAGE(MONAT)
               DAT$="   " : Rem   Datum negativ
            Else 
               DAT$=Right$("   "+Str$(DAT),3)
            End If 
            Print DAT$;
            If GADR=4
               Print #4,DAT$;
            End If 
         Next SPALTE
      Next MSPALTE
      Print 
      If GADR=4
         Print #4,
      End If 
   Next REIHE
Next MREIHE
Close 4
Print 
Print Space$(20);"Ende mit beliebiger Taste";
Input X$
' Wind Close 1 
Screen Close 1
End 
Rem Anzahl der Tage je Monat 
Data 31,28,31,30,31,30,31,31,30,31,30,31
Rem Kurzform der Wochentage
Data "Mo","Di","Mi","Do","Fr","Sa","So"

