#***************************************************************************
#*        Macro für die Erstellung einer Text-Rundstahlliste            *
#***************************************************************************
  i50 = 67          # Anzahl Zeilen fuer Seitenwechsel

name(s80,"auftrag");
name(s81,"dateinam");
name(s82,"kopfpfad");
name(s83,"einrpfad");
name(s84,"einwpfad");
name(s85,"listpfad");

#  --------------------------------------------------------------
# Ausgabedateiname für Kopf festlegen
project( kopfpfad, "ORDERDIR" );
project( dateinam, "ZEICHNUNG" );
project( auftrag, "AUFKURZ" );
string_cat( kopfpfad, "\" );
string_cat( kopfpfad, auftrag );
string_cat( kopfpfad, "\" );
string_cat( kopfpfad, "listname.txt" );
#  --------------------------------------------------------------

# Ausgabedateiname für Listeneinträge festlegen
project( einwpfad, "ORDERDIR" );
project( dateinam, "ZEICHNUNG" );
project( auftrag, "AUFKURZ" );
string_cat( einwpfad, "\" );
string_cat( einwpfad, auftrag );
string_cat( einwpfad, "\" );
string_cat( einwpfad, "ausgaben" );
string_cat( einwpfad, "\" );
string_cat( einwpfad, dateinam );
string_cat( einwpfad, ".txt" );
#  --------------------------------------------------------------
# Einlesedateiname für Listeneinträge festlegen
project( einrpfad, "ORDERDIR" );
project( dateinam, "ZEICHNUNG" );
project( auftrag, "AUFKURZ" );
string_cat( einrpfad, "\" );
string_cat( einrpfad, auftrag );
string_cat( einrpfad, "\" );
string_cat( einrpfad, "ausgaben" );
string_cat( einrpfad, "\" );
string_cat( einrpfad, "*.txt" );
#  --------------------------------------------------------------

# Ausgabedateiname für Liste festlegen
project( listpfad, "ORDERDIR" );
project( dateinam, "ZEICHNUNG" );
project( auftrag, "AUFKURZ" );
string_cat( listpfad, "\" );
string_cat( listpfad, auftrag );
string_cat( listpfad, "\" );
string_cat( listpfad, "ausgaben" );
string_cat( listpfad, "\" );
string_cat( listpfad, dateinam );
string_cat( listpfad, ".sla" );
#  --------------------------------------------------------------

  save_fsm();          # Alte Voreinstellung sichern

# Integervariablen
# i1, i2 = Variable für Abfragen
# i3 = Variable für Seitenzählen
# i88 = Variable für Einlesen der Stabdaten
# i98 = Variable für Schleifen zum Einfügen von Leerzeilen
# i99 = Variable für Schleife zum Zeilenzählen

# Realvariablen

newmask("");writeln("");writeln("");write("Daten für Blattkopf ");

newmask("Daten für Blattkopf");
newslid();
fillslid("Best. Blattkopf verwenden");        # Bestehende Daten verwenden(i1=1)
fillslid("Best. Blattkopfdaten ändern");      # alte Daten ändern(i1=2)
fillslid("Neue Daten für Blattkopf eingeb."); # neue Daten erfassen (i1=3)
doslid(i1);

# Abbruch abfangen 
if(i1 = 0) then
  begin
    exit;
  end;


if(i1 = 1) then
  begin
datopen(0, kopfpfad,"r"); # Vorhandene Daten lesen
    readln(s1); # 1. Zeile für Blattkopf 
    readln(s2); # 2. Zeile für Blattkopf 
    readln(s3); # 3. Zeile für Blattkopf 
    readln(s4); # 4. Zeile für Blattkopf 
datclose();
   end

if(i1 = 2) then
  begin
datopen(0, kopfpfad ,"r"); # Vorhandene Daten lesen
    readln(s1); # 1. Zeile für Blattkopf 
    readln(s2); # 2. Zeile für Blattkopf 
    readln(s3); # 3. Zeile für Blattkopf 
    readln(s4); # 4. Zeile für Blattkopf 
datclose();

newmask("EINGABE DES LISTENKOPFES"); # Eingabemaske öffnen
    maskinfo(1,1,"1. Zeile für Blattkopf :");
      fillmask(-1,3," ",s1,65);                      # Eintrag 1. Zeile
    maskinfo(1,5,"2. Zeile für Blattkopf :");
      fillmask(-1,7," ",s2,65);                      # Eintrag 2. Zeile
    maskinfo(1,9,"3. Zeile für Blattkopf :");
      fillmask(-1,11," ",s3,65);                     # Eintrag 3. Zeile
    maskinfo(1,13,"4. Zeile für Blattkopf :");
      fillmask(-1,15," ",s4,65);                     # Eintrag 4. Zeile
domask();

newmask("ACHTUNG:");
maskinfo(1,1,"- Die Daten für den Blattkopf werden in die Datei:");
maskinfo(1,2," ");
maskinfo(1,3,   kopfpfad );
maskinfo(1,4," ");
maskinfo(1,5,"  gespeichert.");
domask();

datopen(0, kopfpfad ,"w"); # Daten in Datei schreiben 
   writeln(s1);
   writeln(s2);
   writeln(s3);
   writeln(s4);
datclose();
   end

if(i1 = 3) then
  begin
newmask("EINGABE DES LISTENKOPFES"); # Eingabemaske öffnen
    maskinfo(1,1,"1. Zeile für Blattkopf :");
      fillmask(-1,3," ",s1,65);                       # Eintrag 1. Zeile
    maskinfo(1,5,"2. Zeile für Blattkopf :");
      fillmask(-1,7," ",s2,65);                       # Eintrag 2. Zeile
    maskinfo(1,9,"3. Zeile für Blattkopf :");
      fillmask(-1,11," ",s3,65);                     # Eintrag 3. Zeile
    maskinfo(1,13,"4. Zeile für Blattkopf :");
      fillmask(-1,15," ",s4,65);                     # Eintrag 4. Zeile
domask();

newmask("ACHTUNG:");
maskinfo(1,1,"- Die Daten für den Blattkopf werden in die Datei:");
maskinfo(1,2," ");
maskinfo(1,3, kopfpfad );
maskinfo(1,4," ");
maskinfo(1,5,"  gespeichert.");
domask();

datopen(0, kopfpfad ,"w"); # Daten schreiben
   writeln(s1);
   writeln(s2);
   writeln(s3);
   writeln(s4);
datclose();
   end

newmask("");writeln("");writeln("");write("Daten für Stahlliste ");

newmask("Daten für Stahlliste");
newslid();
fillslid("Bauv./ Baut. Daten bearbeiten");         # alte Daten ändern(i2=1)
fillslid("Bestehende Daten übernehmen");           # Daten einlesen (i2=2)
fillslid("Daten von anderer Liste übernehmen");    # aus anderer Liste bearbeiten (i2=3)
fillslid("Neue Daten eingeben");                   # neue Daten erfassen (i2=4)
fillslid("Weiter ");                               # Programm beenden(i1=5)
doslid(i2);

# Abbruch abfangen 
if(i2 = 0) then
  begin
    exit;
  end;

if(i2 = 1) then
  begin
datopen(0, einwpfad ,"r"); # Vorhandene Daten lesen
    readln(s5); # Bauvorh.
    readln(s6); # Bauteil
    readln(s7); # Plan Nr.
    readln(s8); # Liste Nr.
datclose();

newmask("DATEN DER AKTUELLENZEICHNUNG"); # Eingabemaske öffnen
    maskinfo(1,1,"Bauvorhaben:");
      fillmask(-1,3," ",s5,52);                       # Eintrag 1. Zeile
    maskinfo(1,5,"Bauteil           :");
      fillmask(-1,7," ",s6,52);                       # Eintrag 2. Zeile
    maskinfo(1,9,"Plan Nr          :");
      fillmask(-1,11," ",s7,12);                     # Eintrag 3. Zeile
    maskinfo(1,13,"Stahlliste Nr.:");
      fillmask(-1,15," ",s8,12);                     # Eintrag 4. Zeile
domask();

newmask("ACHTUNG:");
maskinfo(1,1,"- Die Daten für die aktuelle Liste werden in die Datei:");
maskinfo(1,2," ");
maskinfo(1,3, einwpfad );
maskinfo(1,4," ");
maskinfo(1,5,"  gespeichert.");
domask();

datopen(0, einwpfad ,"w"); # Daten schreiben
   writeln(s5);
   writeln(s6);
   writeln(s7);
   writeln(s8);
datclose();
   end

if(i2 = 2) then
  begin
datopen(0, einwpfad ,"r"); # Vorhandene Daten lesen
    readln(s5); # Bauvorh.
    readln(s6); # Bauteil
    readln(s7); # Plan Nr.
    readln(s8); # Liste Nr.
datclose();
   end

if(i2 = 3) then
  begin
datopen(1, einrpfad ,"r"); # Vorhandene Daten lesen
    readln(s5); # Bauvorh.
    readln(s6); # Bauteil
    readln(s7); # Plan Nr.
    readln(s8); # Liste Nr.
datclose();

newmask("EINGABE DER LISTENDATEN"); # Eingabemaske öffnen
    maskinfo(1,1,"Bauvorhaben:");
      fillmask(-1,3," ",s5,52);                       # Eintrag 1. Zeile
    maskinfo(1,5,"Bauteil           :");
      fillmask(-1,7," ",s6,52);                       # Eintrag 2. Zeile
    maskinfo(1,9,"Plan Nr          :");
      fillmask(-1,11," ",s7,12);                     # Eintrag 3. Zeile
    maskinfo(1,13,"Stahlliste Nr.:");
      fillmask(-1,15," ",s8,12);                     # Eintrag 4. Zeile
domask();

newmask("ACHTUNG:");
maskinfo(1,1,"- Die Daten für die aktuelle Liste werden in die Datei:");
maskinfo(1,2," ");
maskinfo(1,3, einwpfad );
maskinfo(1,4," ");
maskinfo(1,5,"  gespeichert.");
domask();

datopen(0, einwpfad ,"w"); # Daten schreiben
   writeln(s5);
   writeln(s6);
   writeln(s7);
   writeln(s8);
datclose();
   end

if(i2 = 4) then
  begin
newmask("EINGABE DER LISTENDATEN"); # Eingabemaske öffnen
    maskinfo(1,1,"Bauvorhaben:");
      fillmask(-1,3," ",s5,52);                       # Eintrag 1. Zeile
    maskinfo(1,5,"Bauteil           :");
      fillmask(-1,7," ",s6,52);                       # Eintrag 2. Zeile
    maskinfo(1,9,"Plan Nr          :");
      fillmask(-1,11," ",s7,12);                     # Eintrag 3. Zeile
    maskinfo(1,13,"Stahlliste Nr.:");
      fillmask(-1,15," ",s8,12);                     # Eintrag 4. Zeile
domask();

newmask("ACHTUNG:");
maskinfo(1,1,"- Die Daten für die aktuelle Liste werden in die Datei:");
maskinfo(1,2," ");
maskinfo(1,3, einwpfad );
maskinfo(1,4," ");
maskinfo(1,5,"  gespeichert.");
domask();

datopen(0, einwpfad ,"w"); # Daten schreiben
   writeln(s5);
   writeln(s6);
   writeln(s7);
   writeln(s8);
datclose();
   end

newmask("");writeln("");writeln("");write("ERSTELLEN DER STAHLLISTE ");

newmask("ERSTELLEN DER STAHLLISTE");
newslid();
fillslid("Stahlliste erstellen"); # Stahlliste schreiben(i1=1)
doslid(i1);

# Abbruch abfangen 
if(i1 = 0) then
  begin
    exit;
  end;

  project(s98, "DATE" );

if(i1 = 1) then
  begin
   i3 = 1; # Seitennummer der aktuellen Liste
   i99 = 1; # Zeilenzähler

newmask("ACHTUNG:");
maskinfo(1,1,"- Die aktuelle Liste wird in die Datei:");
maskinfo(1,2," ");
maskinfo(1,3, listpfad );
maskinfo(1,4," ");
maskinfo(1,5,"  gespeichert.");
maskinfo(1,6," ");
maskinfo(1,7,"- Drucken Sie mit 'NOTEPAD' <Editor> :");
maskinfo(1,8,"- Schriftart COURIER - Schriftgrad 10");
domask();

datopen(0, listpfad ,"w"); # Ausgabedatei schreiben
   writeln(s1);
   writeln(s2);
   writeln(s3);
   writeln(s4);
   writeln("-----------------------------------------------------------------------------");
   write("Bauvorhaben      : "); writeln(s5);
   write("Bauteil          : "); writeln(s6);
   write("Stahlliste Nr: "); write(s8); write("   Seite: "); write(i3); write("   Liste zu Plan Nr.: "); write(s7);
            write("   Datum :  "); writeln(s98);

writeln("-----------------------------------------------------------------------------");
writeln("POSITIONSLISTE:");
writeln(" ");
writeln(" POS  STÜCK   d(mm)  SCHNITTLÄNGE    GESAMTLÄNGE   GEWICHT/m   GEWICHT/POS ");
   i99 = i99+12;
 for i88 = 1 to sbwanzpos do
     begin
      sbwliste(i88,"PO","4",s10);
  write(s10);
      sbwliste(i88,"ANZ","7",s11);
  write(s11);
      sbwliste(i88,"DU","7",s12);
  write(s12);


	sbwliste(i88,"LE","15.2",s13);

	# Bei von - bis Eisen LX, damit Formatierung eines Textes genommem wird
	sbwliste(i88,"IS_VON_BIS","",s22); 
	string_to_real(r5,s22);
	if( r5 > 0) then 
		begin
			sbwliste(i88,"LX","15.15",s13);
		end;
			
  write(s13);
 
      sbwliste(i88,"LG","15.2",s14);
  write(s14);
      sbwliste(i88,"KG","11.3",s15);
  write(s15);
      sbwliste(i88,"PG","15.2",s16);
  writeln(s16);
 i99 = i99+1;
if(i99 = i50) then
   begin
#  formfeed();
  i3 = i3+1 # Seitenzähler
  i99 = 1; # Zeilenzähler
   writeln(s1);
   writeln(s2);
   writeln(s3);
   writeln(s4);
   writeln("-----------------------------------------------------------------------------");
   write("Bauvorhaben  : "); writeln(s5);
   write("Bauteil      : "); writeln(s6);
   write("Stahlliste Nr: "); write(s8); write("   Seite: "); write(i3); write("   Liste zu Plan Nr.: "); write(s7);
            write("   Datum :  "); writeln(s98);
   writeln("-----------------------------------------------------------------------------");
writeln("POSITIONSLISTE:");
writeln(" ");
writeln(" POS  STÜCK   d(mm)  SCHNITTLÄNGE    GESAMTLÄNGE   GEWICHT/m   GEWICHT/POS ");
i99 = i99+12; 
     end
   end
      sbwliste(i88,"SP","12.2",s17);
#    write("                                  GEWICHT ALLER POSITIONEN :  ");
#   writeln(s17);
#  i99 = 1;
for i98= 1 to i98+3 do
     begin
   writeln(" ");
   i99 = i99+1;
     end
if( i99 > (i50 - (sbwanzdu + 8))) then
   begin
    i3 = i3+1 # Seitenzähler
    i99 = 1; # Zeilenzähler
   writeln(s1);
   writeln(s2);
   writeln(s3);
   writeln(s4);
   writeln("-----------------------------------------------------------------------------");
   write("Bauvorhaben : "); writeln(s5);
   write("Bauteil     : "); writeln(s6);
   write("Stahlliste Nr: "); write(s8); write("   Seite: "); write(i3); write("   Liste zu Plan Nr.: "); write(s7);
            write("   Datum :  "); writeln(s98);
   writeln("-----------------------------------------------------------------------------");
writeln("POSITIONSLISTE:");
writeln(" ");
end
   writeln(" ");
   writeln("MASSENLISTE :");
   writeln(" ");
   writeln("              d(mm)                  GESAMTLÄNGE   GEWICHT/m     GEWICHT/d ");
  i99 = i99+4;
 for i88 = 1 to sbwanzdu do
     begin
      sbwliste(i88,"DS","18",s18);
  write(s18);
      sbwliste(i88,"DL","30.2",s19);
  write(s19);
      sbwliste(i88,"KM","11.3",s20);
  write(s20);
      sbwliste(i88,"DG","15.2",s21);
  writeln(s21);
  i99 = i99+1; # Zeilenzähler 
  end

writeln(" ");

write("GESAMTGEWICHT :                        BST 500 S       (kg)   ");
  writeln(s17);

datclose();

restore_fsm(); # Alte Voreinstellung wieder holen
   end

spawn( "c:\winnt\system32\notepad.exe" , listpfad );
end.
