summaryrefslogtreecommitdiff
path: root/support/pictex-converter
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/pictex-converter
Initial commit
Diffstat (limited to 'support/pictex-converter')
-rw-r--r--support/pictex-converter/PiCUNIX.PASCAL937
-rw-r--r--support/pictex-converter/piccon1.uue386
-rw-r--r--support/pictex-converter/piccon2.uue419
-rw-r--r--support/pictex-converter/picconv.anleit13
-rw-r--r--support/pictex-converter/picconv.lzhbin0 -> 35840 bytes
-rw-r--r--support/pictex-converter/pictex.info-cb39
-rw-r--r--support/pictex-converter/pictexte.pas1391
7 files changed, 3185 insertions, 0 deletions
diff --git a/support/pictex-converter/PiCUNIX.PASCAL b/support/pictex-converter/PiCUNIX.PASCAL
new file mode 100644
index 0000000000..426a047895
--- /dev/null
+++ b/support/pictex-converter/PiCUNIX.PASCAL
@@ -0,0 +1,937 @@
+(**********************************************************************
+Received: from DGOGWDG1 by DGOGWDG1.BITNET (Mailer R2.07) with BSMTP id 6886;
+ Fri, 26 Jul 91 19:02:21 MSZ
+Received: from mars.gwdg.de by ibm.gwdg.de (IBM VM SMTP R1.2.2MX) with TCP; Fri,
+ 26 Jul 91 19:02:17 MSZ
+Received: by mars.gwdg.de (5.51.2/Apollo-Domain/OS-SR10.1)
+ id AA05383; Fri, 26 Jul 91 19:02:39 +0100
+Date: Fri, 26 Jul 91 19:02:39 +0100
+From: frerichs@mars.gwdg.de (Martin Frerichs)
+Message-Id: <9107261802.AA05383@mars.gwdg.de>
+To: I2010506@dbstu1.bitnet
+***********************************************************************)
+PROGRAM PicTeX;
+
+Label 9999;
+
+CONST Debug = False;
+
+TYPE styp = (right,left);
+ byte = 0..255;
+ var_string = varying[256] of char;
+
+VAR aus : text;
+ ausn,oben,unten,rechts,links,eingabe,ausgabe,
+ savename,savekomm,unterschrift,labelstr,ueberschrift :
+ var_string;
+ unitx,unity, xmax,xmin,ymax,ymin,dx,dy,dxsub,dysub,breite,hoehe,
+ unitry,rymin,rymax,rdy,rdysub : real;
+ fertig,rechteachse,xlog,ylog,rylog,xkreuz,ykreuz,rykreuz : boolean;
+ replot,finalplot : boolean;
+ ydez,xdez,rydez : byte;
+ ch,sprache : char;
+ seite : styp;
+
+PROCEDURE read_value_eof(VAR datei : text; VAR wert : real; VAR Ende : boolean);
+BEGIN
+ Ende := eof(datei);
+ IF not Ende THEN
+ BEGIN
+ read(datei,wert);
+ Ende := eof(datei);
+ END;
+ END;
+
+(****************************************************************************)
+(* Zehner-Logarithmus von 'x': *)
+
+FUNCTION lg(x: real): real;
+
+CONST rez_ln_10 = 0.4342944819; (* rez_ln_10 = 1 / ln(10) *)
+
+BEGIN
+ lg :=0;
+ IF x > 0.0 THEN
+ lg := Ln(x) * rez_ln_10
+ ELSE
+ writeln('Argumentfehler: lg(x): x <= 0 !!!')
+END;
+
+(****************************************************************************)
+(* Berechnung von 'x hoch y': *)
+
+FUNCTION x_hoch_y (x, y: real): real;
+
+VAR ganz_y: InTEGER;
+
+BEGIN
+ IF (x <> 0.0) OR (y <> 0.0) THEN
+ IF x > 0.0 THEN
+ x_hoch_y := Exp(y * Ln(x))
+ ELSE
+ BEGIN
+ ganz_y := Trunc(y);
+ IF ABS(y) <> ABS(ganz_y) THEN
+ writeln('x_hoch_y(x,y): nur ganzzahlige Exponenten zulaessig bei x<0')
+ ELSE
+ IF x <> 0.0 THEN
+ IF (ganz_y MOD 2) = 0 THEN
+ x_hoch_y := Exp(Ln(ABS(x)) * y)
+ ELSE
+ x_hoch_y := -Exp(Ln(ABS(x)) * y) (* ungerader Exponent *)
+ ELSE
+ x_hoch_y := 0
+ END
+ ELSE
+ writeln('x_hoch_y(x,y): x = 0 und y = 0')
+END;
+
+(****************************************************************************)
+
+
+(****************************************************************************)
+PROCEDURE process_file(seite : styp;
+ VAR fertig : boolean;
+ rechteachse,xlogar,ylogar : boolean;
+ VAR aus : text);
+
+CONST b1='BEGIN';
+ e1='END';
+
+VAR einn,symbol,test : var_string;
+ symbolcount,cur : integer;
+ ein : text;
+ anzahl : integer32;
+ ch : char;
+ sym,linie,quadratic,clipping,Ende : boolean;
+ x,y,xa,ya : real;
+
+ FUNCTION betest(t,v : var_string): boolean;
+ VAR t1 : var_string;
+ i : byte;
+ BEGIN
+ t1.length := 0;
+ FOR i:=1 TO t.length DO
+ IF t.body[i] <> ' ' THEN
+ BEGIN
+ t1.body[i]:= t.body[i];
+ t1.length := t1.length + 1
+ END;
+ IF t1 = v THEN
+ betest := true
+ ELSE
+ betest :=false
+ END;
+
+BEGIN {of process_file}
+ writeln('Ende durch leere Eingabe !!');
+ REPEAT
+ write('Daten -Datei (TechPlot-Format!!) : ');
+ readln(einn);
+ IF einn='' THEN
+ fertig := true
+ ELSE
+ fertig := false;
+ IF not fertig THEN
+ BEGIN
+ anzahl := 0;
+ open(ein,einn,'OLD');
+ REPEAT
+ write('mit Plotsymbol (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='j') or (ch='n'));
+ IF ch='j' THEN
+ sym := true
+ ELSE
+ sym := false;
+ REPEAT
+ write('durchgezogene Linie (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='j') or (ch='n'));
+ IF ch='j' THEN
+ linie := true
+ ELSE
+ linie := false;
+ IF linie THEN
+ BEGIN
+ REPEAT
+ write('Quadratische Interpolation (1) oder Polygonzug (2) ? ');
+ readln(ch);
+ UNTIL ((ch='1') or (ch='2'));
+ IF ch='1' THEN
+ quadratic := true
+ ELSE
+ quadratic := false;
+ REPEAT
+ write('Clipping noetig (Achtung, das dauert lange) (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='j') or (ch='n'));
+ IF ch='j' THEN
+ clipping := true
+ ELSE
+ clipping := false;
+ END;
+ IF sym THEN
+ BEGIN
+ write('Plotsymbol (LaTeX-Text) : ');
+ readln(symbol);
+ REPEAT
+ write('Plotsymbol jeden n-ten Punkt : n = ');
+ readln(symbolcount)
+ UNTIL symbolcount > 0;
+ reset(ein);
+ writeln(aus,'%Datei ',einn,' (Symbole)');
+ REPEAT
+ readln(ein,test);
+ writeln(aus,'%% ',test);
+ UNTIL ((betest(test,b1)) or eof(ein));
+ Ende := false;
+ IF eof(ein) THEN
+ Ende := true;
+ write(aus,'% Daten fuer ');
+ IF rechteachse THEN
+ IF (seite=left) THEN
+ write(aus,'linke ')
+ ELSE
+ write (aus,'rechte ');
+ writeln(aus,'y-Achse ...');
+ IF NOT Ende THEN
+ BEGIN
+ writeln('\multiput {',symbol,'} at ');
+ writeln(aus,'\multiput {',symbol,'} at %');
+ END;
+ cur := 0;
+ WHILE NOT Ende DO
+ BEGIN
+ read_value_eof(ein,x,Ende);
+ read_value_eof(ein,y,Ende);
+ IF NOT Ende THEN
+ BEGIN
+ readln(ein);
+ anzahl := anzahl + 1;
+ cur := cur + 1;
+ IF xlogar THEN
+ x:=lg(x);
+ IF ylogar THEN
+ y:=lg(y);
+ IF (cur MOD symbolcount) = 0 THEN
+ BEGIN
+ writeln(aus,' ',x:8:6,' ',y:8:6,' %');
+ writeln( x:8:5,' ',y:8:4)
+ END
+ END
+ ELSE
+ BEGIN
+ writeln(' /');
+ writeln(aus,' /');
+ END;
+ END;
+ END;
+ IF linie THEN
+ BEGIN
+ reset(ein);
+ anzahl := 0;
+ writeln(aus,'%Datei ',einn,' (Linie)');
+ REPEAT
+ readln(ein,test);
+ writeln(aus,'%% ',test);
+ UNTIL ((betest(test,b1)) or eof(ein));
+ Ende := false;
+ IF eof(ein) THEN
+ Ende := true;
+ IF replot THEN
+ BEGIN
+ writeln(aus,'\ifreplot');
+ writeln(aus,'\else')
+ END;
+ IF clipping THEN
+ writeln(aus,'\inboundscheckon');
+ IF quadratic THEN
+ writeln(aus,'\setquadratic')
+ ELSE
+ writeln(aus,'\setlinear');
+ writeln(aus,'\plot ');
+ WHILE NOT Ende DO
+ BEGIN
+ read_value_eof(ein,x,Ende);
+ read_value_eof(ein,y,Ende);
+ IF not Ende THEN
+ BEGIN
+ readln(ein);
+ anzahl := anzahl + 1;
+ IF xlogar THEN
+ x:=lg(x);
+ IF ylogar THEN
+ y:=lg(y);
+ xa :=x;
+ ya :=y;
+ writeln(aus,' ',x:8:6,' ',y:8:6,' %');
+ writeln( x:8:4,' ',y:8:4);
+ END;
+ END;
+ IF quadratic THEN
+ IF not odd(anzahl) THEN
+ writeln(aus,' ',xa*1.00001:8:6,' ',ya*1.00001:8:6,' %');
+ writeln(aus,'/');
+ IF clipping THEN
+ writeln(aus,'\inboundscheckoff');
+ IF replot THEN
+ writeln(aus,'\fi')
+ END;
+ close(ein);
+ END
+ UNTIL fertig
+END; {of process_file}
+
+PROCEDURE Einheiten(VAR unitx,unity,unitry : real; breite,hoehe : real;
+ rechteachse,xlog,ylog,rylog : boolean);
+BEGIN
+ IF xlog THEN
+ unitx := breite/(lg(xmax)-lg(xmin))
+ ELSE
+ unitx := breite/(xmax-xmin);
+ IF ylog THEN
+ unity := HOEHE/(lg(ymax)-lg(ymin))
+ ELSE
+ unity := hoehe/(ymax-ymin);
+ IF rechteachse THEN
+ IF rylog THEN
+ unitry := hoehe/(lg(rymax)-lg(rymin))
+ ELSE
+ unitry := hoehe/(rymax-rymin)
+ ELSE unitry :=0;
+END;
+
+PROCEDURE Skala (VAR aus : text; seite : styp; unitx,unity : real;
+ xlog,ylog,rechteachse,xkreuz,ykreuz : boolean;
+ xmin,xmax,dx,dxsub,ymin,ymax,dy,dysub : real;
+ xdez,ydez :byte; unten,oben,rechts,links : var_string);
+VAR con: text;
+
+ PROCEDURE Log_schrift(VAR aus: text; min,max : real;
+ markiere,kreuz : boolean);
+ VAR ort,o2 : real;
+ expo,code : integer;
+ stellen,i : byte;
+ ex : var_string;
+ BEGIN
+ IF Debug THEN
+ BEGIN
+ writeln;
+ writeln('Log_Schrift: Parameter');
+ writeln('Minimum : ',min );
+ writeln('Maximum : ',max )
+ END;
+ writeln(aus,' ticks logged ');
+ IF kreuz THEN
+ write(aus,'andacross ');
+ IF markiere THEN
+ writeln(aus,'numbered ')
+ ELSE
+ writeln(aus,'unlabeled ');
+ IF markiere THEN
+ BEGIN {Zahlen dranschreiben}
+ write(aus,'withvalues ');
+ ort := min/10.0;
+ expo := Round(lg(ort));
+ REPEAT
+ o2 := (x_hoch_y(10,expo));
+ IF ((o2>=min) and (o2<=max)) THEN
+ write(aus,'$10^{',expo:1,'}$ ');
+ ort := 2.0*o2;
+ IF ((ort<=max) and (ort>=min)) THEN
+ write(aus,'2 ');
+ ort := 3.0*o2;
+ IF ((ort>=min) and (ort<=max)) THEN
+ write(aus,'3 ');
+ ort := 5.0*o2;
+ IF ((ort>=min) and (ort<=max)) THEN
+ write(aus,'5 ');
+ expo := expo + 1
+ UNTIL ort>max;
+ writeln(aus,' /');
+ END;
+ {ticks setzen, normal lang}
+ write(aus,' at ');
+ ort := min/10.0;
+ expo := Round(lg(ort));
+ REPEAT
+ o2 := (x_hoch_y(10,expo));
+ IF expo<0 THEN
+ stellen := abs(expo)
+ ELSE
+ stellen := 0;
+ IF ((o2>=min) and (o2<=max)) THEN
+ write(aus,x_hoch_y(10,expo):1:stellen,' ');
+ {o2 := ort;}
+ ort := 2.0*o2;
+ IF ((ort<=max) and (ort>=min)) THEN
+ write(aus,ort:1:stellen,' ');
+ ort := 3.0*o2;
+ IF ((ort>=min) and (ort<=max)) THEN
+ write(aus,ort:1:stellen,' ');
+ ort := 5.0*o2;
+ IF ((ort>=min) and (ort<=max)) THEN
+ write(aus,ort:1:stellen,' ');
+ expo := expo + 1
+ UNTIL ort>max;
+ writeln(aus,' /');
+ {ticks, immer ohne Beschriftung, lang }
+ writeln(aus,' unlabeled at ');
+ ort := min/10.0;
+ expo := Round(lg(ort));
+ REPEAT
+ o2 := (x_hoch_y(10,expo));
+ IF expo<0 THEN
+ stellen := abs(expo)
+ ELSE
+ stellen :=0;
+ ort := 4.0*o2;
+ IF ((ort>=min) and (ort<=max)) THEN
+ write(aus,ort:1:stellen,' ');
+ FOR i:=6 TO 9 DO
+ BEGIN
+ ort := i*o2;
+ IF ((ort>=min) and (ort<=max)) THEN
+ write(aus,ort:1:stellen,' ');
+ END;
+ expo := expo + 1
+ UNTIL ort>max;
+ writeln(aus,' /');
+ {ticks, ohne Beschriftung, kurz }
+ writeln(aus,' unlabeled short at ');
+ ort := min/10.0;
+ expo := Round(lg(ort));
+ REPEAT
+ o2 := (x_hoch_y(10,expo));
+ IF expo<=0 THEN
+ stellen := abs(expo)+1
+ ELSE
+ stellen :=0;
+ FOR i:=1 TO 9 DO
+ BEGIN
+ ort := o2*(1.0+i*0.2); {1.2, 1.4, ... 2.8 }
+ IF ((ort>=min) and (ort<=max)) THEN
+ write(aus,ort:1:stellen,' ');
+ END;
+ ort :=3.5*o2;
+ IF ((ort>=min) and (ort<=max)) THEN
+ write(aus,ort:1:stellen,' ');
+ ort :=4.5*o2;
+ IF ((ort>=min) and (ort<=max)) THEN
+ write(aus,ort:1:stellen,' ');
+ expo := expo + 1
+ UNTIL ort>max;
+ writeln(aus,' /'); {letztes "at"}
+ writeln(aus,' /'); {Ende von "\axis"}
+ END; { of Log_Schrift}
+
+BEGIN { of Skala}
+ open(con,'-STDOUT','UNKNOWN');
+ rewrite(con);
+ write('\setcoordinatesystem units <',unitx:1:5,'mm,',unity:1:5,'mm> point at
+ ');
+ IF xlog THEN
+ write(lg(xmin):1:5,' ')
+ ELSE
+ write(xmin:1:5,' ');
+ IF ylog THEN
+ writeln(lg(ymin):1:5)
+ ELSE
+ writeln(ymin:1:5);
+ write('\setplotarea x from ');
+ IF xlog THEN
+ write(lg(xmin):8:5)
+ ELSE
+ write(xmin:8:5);
+ write(' to ');
+ IF xlog THEN
+ write(lg(xmax):8:5)
+ ELSE
+ write(xmax:8:5);
+ write(', y from ');
+ IF ylog THEN
+ write(lg(ymin):8:5)
+ ELSE
+ write(ymin:8:5);
+ write(' to ');
+ IF ylog THEN
+ writeln(lg(ymax):8:5)
+ ELSE
+ writeln(ymax:8:5);
+ IF seite=left THEN
+ BEGIN
+ write('\axis bottom shiftedto y=');
+ IF ylog THEN
+ write(lg(ymin):8:5)
+ ELSE
+ write(ymin:8:5);
+ write(' label {',unten,'} ');
+ IF xlog THEN
+ Log_schrift(con,xmin,xmax,true,xkreuz)
+ ELSE
+ writeln(' ticks numbered from ',
+ xmin:8:xdez,' to ',xmax:8:xdez,' by ',dx:8:xdez,
+ ' unlabeled short from ',xmin:8:xdez,' to ',
+ xmax:8:xdez,' by ',dxsub:8:xdez,' /');
+ IF oben <> '' THEN
+ BEGIN
+ write('\axis top shiftedto y=');
+ IF ylog THEN
+ write(lg(ymax):8:5)
+ ELSE
+ write(ymax:8:5);
+ write(' label {',oben,'} ');
+ IF xlog THEN
+ Log_schrift(con,xmin,xmax,false,false)
+ ELSE
+ writeln(' ticks unlabeled from ',
+ xmin:8:xdez,' to ',xmax:8:xdez,' by ',dx:8:xdez,
+ ' unlabeled short from ',xmin:8:xdez,' to ',
+ xmax:8:xdez,' by ',dxsub:8:xdez,' /')
+ END;
+ write('\axis left shiftedto x=');
+ IF xlog THEN
+ write(lg(xmin):8:5)
+ ELSE
+ write(xmin:8:5);
+ write(' label {',links,'} ');
+ IF ylog THEN
+ Log_schrift(con,ymin,ymax,true,ykreuz)
+ ELSE
+ writeln(' ticks numbered from ',
+ ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez,
+ ' unlabeled short from ',ymin:8:ydez,' to ',
+ ymax:8:ydez,' by ',dysub:8:ydez,' /');
+ IF not rechteachse THEN
+ IF rechts <> '' THEN
+ BEGIN
+ write('\axis right shiftedto x=');
+ IF xlog THEN
+ write(lg(xmax):8:5)
+ ELSE
+ write(xmax:8:5);
+ write(' label {',rechts,'} ');
+ IF ylog THEN
+ Log_schrift(con,ymin,ymax,false,false)
+ ELSE
+ writeln(' ticks unlabeled from ',
+ ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez,
+ ' unlabeled short from ',ymin:8:ydez,' to ',
+ ymax:8:ydez,' by ',dysub:8:ydez,' /')
+ END
+ END
+ ELSE
+ BEGIN
+ write('\axis right shiftedto x=');
+ IF xlog THEN
+ write(lg(xmax):8:5)
+ ELSE
+ write(xmax:8:5);
+ write(' label {',rechts,'} ');
+ IF ylog THEN
+ Log_schrift(con,ymin,ymax,true,ykreuz)
+ ELSE
+ writeln(' ticks numbered from ',
+ ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez,
+ ' unlabeled short from ',ymin:8:ydez,' to ',
+ ymax:8:ydez,' by ',dysub:8:ydez,' /');
+ END;
+ close(con);
+ write(aus,'\setcoordinatesystem units <',unitx:1:5,'mm,',unity:1:5,'mm> point
+ at ');
+ IF xlog THEN
+ write(aus,lg(xmin):1:6,' ')
+ ELSE
+ write(aus,xmin:1:6,' ');
+ IF ylog THEN
+ writeln(aus,lg(ymin):1:6)
+ ELSE
+ writeln(aus,ymin:1:6);
+ write(aus,'\setplotarea x from ');
+ IF xlog THEN
+ write(aus,lg(xmin):1:6)
+ ELSE
+ write(aus,xmin:1:6);
+ write(aus,' to ');
+ IF xlog THEN
+ write(aus,lg(xmax):1:6)
+ ELSE
+ write(aus,xmax:1:6);
+ write(aus,', y from ');
+ IF ylog THEN
+ write(aus,lg(ymin):1:6)
+ ELSE
+ write(aus,ymin:8:5);
+ write(aus,' to ');
+ IF ylog THEN
+ writeln(aus,lg(ymax):1:6)
+ ELSE
+ writeln(aus,ymax:1:6);
+ IF seite=left THEN
+ BEGIN
+ write(aus,'\axis bottom shiftedto y=');
+ IF ylog THEN
+ write(aus,lg(ymin):1:6)
+ ELSE
+ write(aus,ymin:1:6);
+ write(aus,' label {',unten,'} ');
+ IF xlog THEN
+ Log_schrift(aus,xmin,xmax,true,xkreuz)
+ ELSE
+ BEGIN
+ write(aus,' ticks ');
+ IF xkreuz THEN
+ write(aus,'andacross ');
+ writeln(aus,'numbered from ',
+ xmin:1:xdez,' to ',xmax:1:xdez,' by ',dx:1:xdez,
+ ' unlabeled short from ',xmin:1:xdez+3,' to ',
+ xmax:1:xdez+3,' by ',dxsub:1:xdez+3,' /');
+ END;
+ IF oben <> '' THEN
+ BEGIN
+ write(aus,'\axis top shiftedto y=');
+ IF ylog THEN
+ write(aus,lg(ymax):1:6)
+ ELSE
+ write(aus,ymax:1:6);
+ write(aus,' label {',oben,'} ');
+ IF xlog THEN
+ Log_schrift(aus,xmin,xmax,false,false)
+ ELSE
+ writeln(aus,' ticks unlabeled from ',
+ xmin:1:xdez+2,' to ',xmax:1:xdez+2,' by ',dx:1:xdez+2,
+ ' unlabeled short from ',xmin:1:xdez+3,' to ',
+ xmax:1:xdez+3,' by ',dxsub:1:xdez+3,' /')
+ END;
+ write(aus,'\axis left shiftedto x=');
+ IF xlog THEN
+ write(aus,lg(xmin):1:6)
+ ELSE
+ write(aus,xmin:1:6);
+ write(aus,' label {',links,'} ');
+ IF ylog THEN
+ Log_schrift(aus,ymin,ymax,true,ykreuz)
+ ELSE
+ BEGIN
+ write(aus,' ticks ');
+ IF ykreuz THEN
+ write(aus,'andacross ');
+ writeln(aus,'numbered from ',
+ ymin:1:ydez,' to ',ymax:1:ydez,' by ',dy:1:ydez,
+ ' unlabeled short from ',ymin:1:ydez+3,' to ',
+ ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /');
+ END;
+ IF not rechteachse THEN
+ IF rechts <> '' THEN
+ BEGIN
+ write(aus,'\axis right shiftedto x=');
+ IF xlog THEN
+ write(aus,lg(xmax):1:6)
+ ELSE
+ write(aus,xmax:1:6);
+ write(aus,' label {',rechts,'} ');
+ IF ylog THEN
+ Log_schrift(aus,ymin,ymax,false,false)
+ ELSE
+ writeln(aus,' ticks unlabeled from ',
+ ymin:1:ydez+2,' to ',ymax:1:ydez+2,' by ',dy:1:ydez+2,
+ ' unlabeled short from ',ymin:1:ydez+3,' to ',
+ ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /')
+ END
+ END
+ ELSE
+ BEGIN
+ write(aus,'\axis right shiftedto x=');
+ IF xlog THEN
+ write(aus,lg(xmax):1:6)
+ ELSE
+ write(aus,xmax:1:6);
+ write(aus,' label {',rechts,'} ');
+ IF ylog THEN
+ Log_schrift(aus,ymin,ymax,true,ykreuz)
+ ELSE
+ BEGIN
+ write(aus,' ticks ');
+ IF ykreuz THEN
+ write(aus,'andacross ');
+ writeln(aus,'numbered from ',
+ ymin:1:ydez,' to ',ymax:1:ydez,' by ',dy:1:ydez,
+ ' unlabeled short from ',ymin:1:ydez+3,' to ',
+ ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /');
+ END;
+ END;
+END; {of Skala}
+
+BEGIN
+ writeln;
+ writeln(' Datei-Konverter Daten -->PiCTeX input ... ');
+ writeln('(c) Christian Boettger, Inst. f. Metallphysik, TU Braunschweig');
+ writeln(' & Martin Frerichs, Inst. f. Theor. Physik, U Goettingen for');
+ writeln(' Revised Unix Edition');
+ writeln(' Version 1.0.1, 26.7.1991 ');
+ writeln;
+ write('PiCTeX-Datei : ');
+ readln(ausn);
+ open(aus,ausn,'UNKNOWN');
+ rewrite(aus);
+ writeln;
+ write('X-Achse : Minimum = ');
+ readln(xmin);
+ write('X-Achse : Maximum = ');
+ readln(xmax);
+ REPEAT
+ write('x-Achse logarithmisch (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='n') or (ch='j'));
+ IF ch='j' THEN
+ xlog := true
+ ELSE xlog := false;
+ IF not xlog THEN
+ BEGIN
+ write('X-Achse : Schrittweite = ');
+ readln(dx);
+ write('X-Achse : Schrittweite Sub-Unterteilungen = ');
+ readln(dxsub);
+ write('X-Achse : Dezimalstellen der Beschriftung = ');
+ readln(xdez);
+ END;
+ REPEAT
+ write('x-Achse Markierungen durchziehen (Gitter) (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='n') or (ch='j'));
+ IF ch='j' THEN
+ xkreuz := true
+ ELSE
+ xkreuz := false;
+ writeln;
+ writeln('Eingabe der Daten fuer die (linke) Y-Achse ...');
+ write('y-Achse : Minimum = ');
+ readln(ymin);
+ write('y-Achse : Maximum = ');
+ readln(ymax);
+ REPEAT
+ write('(linke) y-Achse logarithmisch (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='n') or (ch='j'));
+ IF ch='j' THEN
+ ylog := true
+ ELSE
+ ylog := false;
+ IF not ylog THEN
+ BEGIN
+ write('y-Achse : Schrittweite = ');
+ readln(dy);
+ write('y-Achse : Schrittweite Sub-Unterteilungen = ');
+ readln(dysub);
+ write('y-Achse : Dezimalstellen der Beschriftung = ');
+ readln(ydez);
+ END;
+ REPEAT
+ write('(linke) y-Achse Markierungen durchziehen (Gitter) (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='N') or (ch = 'n') or (ch = 'J') or (ch='j'));
+ IF (ch='j') or (ch = 'j') THEN
+ ykreuz := true
+ ELSE
+ ykreuz := false;
+ writeln;
+ REPEAT
+ write('zweite unabhaengige Skala auf rechter y-Achse (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='n') or (ch='j'));
+ IF ch='j' THEN
+ rechteachse :=true
+ ELSE
+ rechteachse:=false;
+ IF rechteachse THEN
+ BEGIN
+ writeln;
+ write('rechte y-Achse : Minimum = ');
+ readln(rymin);
+ write('rechte y-Achse : Maximum = ');
+ readln(rymax);
+ REPEAT
+ write('rechte y-Achse logarithmisch (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='n') or (ch='j'));
+ IF ch='j' THEN
+ rylog := true
+ ELSE
+ rylog := false;
+ IF not rylog THEN
+ BEGIN
+ write('rechte y-Achse : Schrittweite = ');
+ readln(rdy);
+ write('rechte y-Achse : Schrittweite Sub-Unterteilungen = ');
+ readln(rdysub);
+ write('rechte y-Achse : Dezimalstellen der Beschriftung = ');
+ readln(rydez);
+ END;
+ REPEAT
+ write('rechte y-Achse Markierungen durchziehen (Gitter) (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='n') or (ch='j'));
+ IF ch='j' THEN
+ rykreuz := true
+ ELSE
+ rykreuz := false;
+ writeln;
+ END;
+ write('Beschriftung Unterkante : ');
+ readln(unten);
+ write('Beschriftung Oberkante : ');
+ readln(oben);
+ write('Beschriftung rechts : ');
+ readln(rechts);
+ write('Beschriftung links : ');
+ readln(links);
+ writeln;
+ write('Breite des Bildes in mm = ');
+ readln(breite);
+ write('Hoehe des Bildes in mm = ');
+ readln(hoehe);
+ writeln;
+ write('Unterschrift des Bildes (\caption) : ');
+ readln(unterschrift);
+ write('Ueberschrift des Bildes : ');
+ readln(ueberschrift);
+ write('LaTeX-Label des Bildes : ');readln(labelstr);
+ REPEAT
+ writeln('Sprache des Textes:');
+ write(' a=austrian, e=english, f=french, g=german, u=USenglish ? ');
+ readln(sprache);
+ UNTIL sprache in ['a','e','f','g','u'];
+ writeln;
+ writeln('und nun die Zwischenspeicherung ...');
+ savename :='';
+ REPEAT
+ write('Dateiname fuer \savelinesandcurves bzw. \replot = ');
+ readln(savename);
+ UNTIL savename<>'';
+ write('Kommentar im Save-File = ');
+ readln(savekomm);
+ writeln;
+ writeln('und nun die if-switches (Diese muessen im Dokument vor Benutzung');
+ writeln(' deklariert werden!)');
+ REPEAT
+ write('Switch replot benutzen (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='n') or (ch='j'));
+ IF ch='j' THEN
+ replot := true
+ ELSE
+ replot := false;
+ writeln;
+ REPEAT
+ write('Switch finalplot benutzen (j/n) ? ');
+ readln(ch);
+ UNTIL ((ch='n') or (ch='j'));
+ IF ch='j' THEN
+ finalplot := true
+ ELSE
+ finalplot := false;
+ writeln;
+ Einheiten(unitx,unity,unitry,breite,hoehe,rechteachse,xlog,ylog,rylog);
+ writeln('\begin{figure}[htb]');
+ writeln('\originalTeX');
+ writeln('\[ %horizontal zentrierte Ausgabe an');
+ writeln('\beginpicture');
+ writeln(aus,'\begin{figure}[htb]');
+ writeln(aus,'\originalTeX');
+ writeln(aus,'\[ %zentrierte Ausgabe an');
+ writeln(aus,'\beginpicture');
+ IF replot THEN
+ BEGIN
+ writeln(aus,'\ifreplot');
+ writeln(aus,'\else');
+ END;
+ writeln(aus,'\savelinesandcurves on "',savename,'"');
+ writeln(aus,'\writesavefile {',savekomm,'}');
+ IF replot THEN
+ writeln(aus,'\fi');
+ skala (aus,left,
+ unitx,unity,
+ xlog,ylog,rechteachse,xkreuz,ykreuz,
+ xmin,xmax,dx,dxsub,ymin,ymax,dy,dysub,xdez,ydez,
+ unten,oben,rechts,links);
+ IF ueberschrift <> '' THEN
+ writeln(aus,'\plotheading {',ueberschrift,'}');
+ IF replot THEN
+ BEGIN
+ writeln(aus,'\ifreplot');
+ IF finalplot THEN
+ writeln(aus,'\iffinalplot');
+ writeln(aus,'\replot "',savename,'"');
+ IF finalplot THEN
+ writeln(aus,'\fi');
+ writeln(aus,'\fi')
+ END
+ ELSE
+ writeln(aus,'%\replot');
+ fertig := false;
+ IF finalplot THEN
+ writeln(aus,'\iffinalplot');
+ REPEAT
+ writeln;
+ IF rechteachse THEN
+ writeln('nur Daten fuer die LINKE (!!) y- Achse jetzt !!!!');
+ process_file(left,fertig,rechteachse,xlog,ylog,aus);
+ UNTIL fertig;
+ IF finalplot THEN
+ writeln(aus,'\fi');
+ IF rechteachse THEN
+ BEGIN
+ skala (aus,right,
+ unitx,unitry,
+ xlog,rylog,rechteachse,xkreuz,rykreuz,
+ xmin,xmax,dx,dxsub,rymin,rymax,rdy,rdysub,xdez,rydez,
+ unten,oben,rechts,links);
+ fertig := false;
+ IF finalplot THEN
+ writeln(aus,'\iffinalplot');
+ REPEAT
+ writeln;
+ writeln('nur Daten fuer die RECHTE (!!) y- Achse ab jetzt !!!!');
+ process_file(right,fertig,rechteachse,xlog,rylog,aus);
+ UNTIL fertig;
+ IF finalplot THEN
+ writeln(aus,'\fi');
+ END;
+ IF replot THEN
+ BEGIN
+ writeln(aus,'\ifreplot');
+ writeln(aus,'\else')
+ END;
+ writeln(aus,'\dontsavelinesandcurves');
+ IF replot THEN
+ writeln(aus,'\fi');
+ writeln(aus,'\endpicture');
+ writeln(aus,'\]');
+ writeln(aus,'\germanTeX');
+ write(aus,'\selectlanguage{\');
+ CASE sprache OF
+ 'a' : writeln(aus,'austrian}');
+ 'e' : writeln(aus,'english}');
+ 'f' : writeln(aus,'french}');
+ 'g' : writeln(aus,'german}');
+ 'u' : writeln(aus,'USenglish}');
+ END;
+ writeln(aus,'\caption{',unterschrift,' \label{',labelstr,'}}');
+ writeln(aus,'\end{figure}');
+ writeln('\endpicture');
+ writeln('\]');
+ writeln('\germanTeX');
+ write('\selectlanguage{\');
+ CASE sprache OF
+ 'a' : writeln('austrian}');
+ 'e' : writeln('english}');
+ 'f' : writeln('french}');
+ 'g' : writeln('german}');
+ 'u' : writeln('USenglish}');
+ END;
+ writeln('\caption{',unterschrift,' \label{',labelstr,'}}');
+ writeln('\end{figure}');
+ close(aus);
+ 9999:
+END.
diff --git a/support/pictex-converter/piccon1.uue b/support/pictex-converter/piccon1.uue
new file mode 100644
index 0000000000..49923764df
--- /dev/null
+++ b/support/pictex-converter/piccon1.uue
@@ -0,0 +1,386 @@
+QUUNCD Ver. 1.2, by Theodore A. Kaldis.
+BEGIN--cut here--CUT HERE--Part 1
+begin 600 picconv.lzh
+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
+END--cut here--CUT HERE--Part 1
diff --git a/support/pictex-converter/piccon2.uue b/support/pictex-converter/piccon2.uue
new file mode 100644
index 0000000000..a1a09bded1
--- /dev/null
+++ b/support/pictex-converter/piccon2.uue
@@ -0,0 +1,419 @@
+QUUNCD Ver. 1.2, by Theodore A. Kaldis.
+BEGIN--cut here--CUT HERE--Part 2
+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
+9LT'\1G/V&8\QE*[;K\==A&@H+L>J_[^\``!U
+`
+end
+END--cut here--CUT HERE--Part 2
diff --git a/support/pictex-converter/picconv.anleit b/support/pictex-converter/picconv.anleit
new file mode 100644
index 0000000000..524299a482
--- /dev/null
+++ b/support/pictex-converter/picconv.anleit
@@ -0,0 +1,13 @@
+Kurzbemerkung zum PiCTeX-Converter:
+Das Programm erklaert sich (hoffentlich) selbst.
+Das Datenformat fuer die XY-Tabelle ist:
+-------------cut here---------------
+Hier k¾nnen beliebige Kommentare stehen ...
+Hier auch, bis...
+BEGIN
+2342 34535
+2342 5675 hier darf beliebiger Text OHNE Ziffern stehen
+1231231 576 hier auch
+.9 0.6
+1e-4 -70.3
+END darf, muss aber nicht hier stehen
diff --git a/support/pictex-converter/picconv.lzh b/support/pictex-converter/picconv.lzh
new file mode 100644
index 0000000000..cfca20833c
--- /dev/null
+++ b/support/pictex-converter/picconv.lzh
Binary files differ
diff --git a/support/pictex-converter/pictex.info-cb b/support/pictex-converter/pictex.info-cb
new file mode 100644
index 0000000000..c77de0bd9b
--- /dev/null
+++ b/support/pictex-converter/pictex.info-cb
@@ -0,0 +1,39 @@
+Date: Tue, 23 Jul 91 16:59:55 MEZ
+From: Christian Boettger <I2010506@DBSTU1>
+Organization: Technische Universitaet Braunschweig, Germany
+Subject: PiCTeX
+To: tex-d-l@dearn
+Message-Id: <910723.165955.MEZ.I2010506@DBSTU1>
+========================================================================
+Hallo,
+ich habe fuer den Eigengebrauch ein Programm geschrieben, dasz eine
+X-Y-Wertetabelle einliest und mit einigen Fragen an den Anwender daraus
+ein PiCTeX Quellfile bastelt, mit Achsen und Beschriftung etc.
+Geschrieben unter TurboPASCAL 5.5, sollte aber recht leicht auf anderes
+PASCAL (oder C..) umzuschreiben sein, da wenig TurboPASCAL spezifisches
+verwendet wird.
+Den Quelltext (und natuerlich das EXE) koennte ich zur Verfuegung stellen,
+aber OHNE Funktionsgarantie.
+Wer Interesse hat, melde sich mal bei mir (oder waere das etwas fuer die
+diversen Server??)
+Christian Boettger
+
+________________________________________________________________________________
+ Christian Boettger phone: (+49) (0)531/391-5113
+ FAX : (+49) (0)531/391-5129
+mail: Institut fuer Metallphysik und Nukleare Festkoerperphysik,
+ (room -167/-168), Technische Universitaet Braunschweig,
+ Mendelssohnstrasse 3, W-3300 Braunschweig, Bundesrepublik Deutschland
+ FRG / RFA / Germany
+________________________________________________________________________________
+EARN: I2010506@DBSTU1.BITNET
+InterNet: boettger@julian.uwo.CA
+ boettger@rz.tu-braunschweig.dbp.DE
+X.400: S=boettger; OU=rz; P=tu-braunschweig; A=dbp; C=de;
+UUCP / UseNet:
+ <boettger@ria.UUCP> or <boettger@julian.UUCP>
+ (whereever)!uunet!watmath!ria!boettger
+ (whereever)!uunet!mcvax!unido!DBSTU1.BITNET%i2010506
+********************************************************************************
+
+
diff --git a/support/pictex-converter/pictexte.pas b/support/pictex-converter/pictexte.pas
new file mode 100644
index 0000000000..873ab9b1b9
--- /dev/null
+++ b/support/pictex-converter/pictexte.pas
@@ -0,0 +1,1391 @@
+program pictextest;
+
+uses {cb_util,}dos,crt{,mathfunc};
+
+
+
+type styp = (right,left);
+
+var aus : text;
+ ausn,oben,unten,rechts,links,eingabe,ausgabe,
+ savename,savekomm,unterschrift,labelstr,ueberschrift : string;
+ unitx,unity, xmax,xmin,ymax,ymin,dx,dy,dxsub,dysub,breite,hoehe,
+ unitry, rymin,rymax,rdy,rdysub : real;
+ fertig,rechteachse,xlog,ylog,rylog,xkreuz,ykreuz,rykreuz : boolean;
+ ydez,xdez,rydez : byte;
+ ch,sprache : char;
+ seite : styp;
+ dos_major_version, dos_minor_version : integer;
+
+
+(***********************************************************************
+Received: by DEARN (Mailer R2.03B) id 8469; Wed, 14 Feb 90 18:27:58 MEZ
+Date: Wed, 14 Feb 90 01:19:57 CST
+Reply-To: Borland Pascal Discussion Group <PASCAL-L@YALEVM>
+Sender: Borland Pascal Discussion Group <PASCAL-L@YALEVM>
+From: "John M. Kelsey" <C445585@UMCVMB.BITNET>
+Subject: Cursor questions
+To: "Christian Boettger, TU Braunschweig, FRG" <I2010506@DBSTU1>
+
+I finally got around to looking up the three BIOS interrupst I needed
+to call and got a working package to make the cursor vanish, then restore
+it to the same kind of cursor it was before. (Otherwise, a program which
+uses different cursor-sizes at different times, and uses a generic routine
+to set the cursor off and back to the small cursor, may have the cursor
+size change every time, say, a window is blown open.) I'll type these two
+procedures in here.
+*************************************************************************)
+
+Procedure Cursor_Vanish(VAR W : Word);
+VAR Regs : Registers;
+Begin WITH Regs DO Begin
+ AH := $03;
+ BH := $00;
+ Intr($10,Regs);
+ W := CX;
+ AH := $01;
+ CL := $20;
+ CH := $20;
+ Intr($10,Regs);
+End End; { End procedure }
+
+Procedure Cursor_Restore(VAR W : Word );
+VAR Regs : Registers;
+Begin WITH Regs DO Begin
+ AH := $01;
+ BH := $00;
+ CX := W;
+ Intr($10,Regs);
+End End; { End procedure }
+
+(*************************************************************************
+These two procedures have to be compiled with the DOS unit available.
+(After the Program line, put uses DOS;)
+
+I've tried to be pretty careful typing these in, but I don't even pretend
+to be perfect, so if you want to use these procedures, I'd recommend typing
+them in, then saving them, then running a program once as a test. (A test
+program for these two should be pretty simple.)
+
+Also, regarding the screen saving procedures in _Turbo Pascal, the
+Complete Reference_, I've written some routines that implement a simple
+stack of saved screens, so that you can simply push the present screen
+state, draw your menu, then pop the last screen state off the stack.
+If anyone's interested, I should be able to upload the routines from a PC
+disk....
+
+--John Kelsey, C445585@UMCVMB
+**************************************************************************)
+
+Function Zentriere (meldung : string; var status : boolean) : byte;
+{Berechnet X-Position fr zentrierte Ausgabe von MELDUNG mit GotoXY}
+var laenge : byte;
+begin
+ laenge := length(meldung);
+ if ((laenge>=80) or (laenge=0)) then status := false else status := true;
+ if status then Zentriere := (80-length(meldung)) DIV 2
+ else Zentriere := 0;
+end; {of Zentriere}
+
+procedure Ende (var raus : boolean);
+ var screen : string;
+ status : boolean;
+ antwort : char;
+
+ BEGIN
+ raus := FALSE;
+ ClrScr;
+ screen := 'Programm wirklich beenden (j/n) ? ';
+ GotoXY(Zentriere(screen,status),12); write(screen);
+ Readln(antwort);
+ antwort := UpCase(antwort);
+ IF antwort = 'J' THEN raus := TRUE;
+ END;
+
+
+procedure StandBy;
+ CONST meldung1 = 'Weiter mit beliebiger Taste';
+ meldung2 = ' ';
+ var x,y,x_pos : byte;
+ muell : char;
+ cursor : word;
+ status : boolean;
+ begin
+ Cursor_Vanish(cursor);
+ x:=whereX; y:= WhereY;
+ x_pos := Zentriere(meldung1,status);
+ GotoXY(x_pos,25);
+ HighVideo;
+ write(meldung1);
+ NormVideo;
+ repeat until keypressed;
+ muell := ReadKey;
+ GotoXY(x_pos,25); write(meldung2);
+ GotoXY(x,y);
+ Cursor_Restore(cursor);
+ end;
+
+
+(************************************************************************
+Received: from CUNYVM by CUNYVM.BITNET (Mailer R2.03B) with BSMTP id 6339; Tue,
+ 13 Feb 90 21:05:12 EST
+Received: from cod.nosc.mil by CUNYVM.CUNY.EDU (IBM VM SMTP R1.2.2MX) with TCP;
+ Tue, 13 Feb 90 21:05:09 EST
+Received: by cod.nosc.mil (5.59/1.27)
+ id AA01529; Tue, 13 Feb 90 18:06:29 PST
+Date: Tue, 13 Feb 90 18:06:29 PST
+From: howell@cod.nosc.mil (Susan Howell)
+Message-Id: <9002140206.AA01529@cod.nosc.mil>
+To: ADD.@BOETT
+Cc: howell@cod.nosc.mil
+Subject: Source for supporting unit ERRORCOD
+
+-------
+
+
+
+ APPENDIX R
+
+ SOURCE LISTING FOR UNIT ERRORCOD
+
+***********************************************************************)
+(*******************************************************************)
+(**** ERRORCOD.PAS ****)
+(**** This unit maps MS-DOS error codes returned by the ****)
+(**** operating system to strings to give the operator a ****)
+(**** human readable response. ****)
+(**** ****)
+(**** Reference: MS-DOS Version 3 Programmer's Utility Pack ****)
+(**** MS-DOS Reference Guide Volume 1 ****)
+(**** 1986, pp. 4.86-4.88, 4.254-4.257. ****)
+(**** ****)
+(**** Developed by Nelson Ard ****)
+(**** ****)
+(**** Last modificaton Sep 89 ****)
+(*******************************************************************)
+(*********************
+UNIT ErrorCod;
+
+INTERFACE
+
+USES Dos;
+*******************)
+CONST Error_Code : ARRAY [0..88] OF
+ string[40] = ('No errors',
+ 'Invalid function code',
+ 'File not found',
+ 'Path not found',
+ 'No file handles left',
+ 'Access denied',
+ 'Invalid handle',
+ 'Memory control blocks destroyed',
+ 'Insufficient memory',
+ 'Invalid memory block address',
+ 'Invalid environment',
+ 'Invalid format',
+ 'Invalid access code',
+ 'Invalid data',
+ 'RESERVED error code',
+ 'Invalid drive',
+ 'Attempt to remove the current directory',
+ 'Not same device',
+ 'No more files',
+ 'Disk is write-protected',
+ 'Bad disk unit',
+
+ 'Drive not ready',
+ 'Invalid disk command',
+ 'CRC error',
+ 'Invalid length (disk operation)',
+ 'Seek error',
+ 'Not an MS-DOS disk',
+ 'Sector not found',
+ 'Out of paper',
+ 'Write fault',
+ 'Read fault',
+ 'General failure',
+ 'Sharing violation',
+ 'Lock violation',
+ 'Wrong disk',
+ 'FCB unavailable',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'Network request not supported',
+ 'Remote computer not listening',
+ 'Duplicate name on network',
+ 'Network name not found',
+ 'Network busy',
+ 'Network device no longer exists',
+ 'Net BIOS command limit exceeded',
+ 'Network adapter hardware error',
+ 'Incorrect response from network',
+ 'Unexpected network error',
+ 'Incompatible remote adapt',
+ 'Print queue full',
+ 'Queue not full',
+ 'Not enough space for print file',
+ 'Network name was deleted',
+ 'Access denied',
+ 'Network device type incorrect',
+ 'Network name not found',
+ 'Network name limit exceeded',
+ 'Net BIOS session time exceeded',
+ 'Temporarily paused',
+ 'Network request not accepted',
+
+ 'Print or disk redirection is paused',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'RESERVED error code',
+ 'File exits',
+ 'Duplicate File Control Block',
+ 'Cannot make',
+ 'Interrupt 24 failure',
+ 'Out of structures',
+ 'Already assigned',
+ 'Invalid password',
+ 'Invalid parameter',
+ 'Net write fault');
+
+CONST Error_Class : ARRAY [1..12] OF string[40] =
+ ('Out of a resource',
+ 'Temporary situation',
+ 'Permission problem',
+ 'Internal error in system software',
+ 'Hardware failure',
+ 'System software failure',
+ 'Application program error',
+ 'File or item not found',
+ 'File or item of invalid format',
+ 'File or item interlocked',
+ 'Media failure - storage medium',
+ 'Unknown error');
+
+ Recommended_Error_Action : ARRAY [1..7] OF String[40] =
+ ('Retry, then prompt user',
+ 'Retry after a pause',
+ 'Reprompt user to reenter',
+ 'Terminate with clean up',
+ 'Terminate immediately',
+ 'Observe only',
+ 'Retry after correcting fault');
+
+ Error_Locus : ARRAY [1..5] OF String[40] =
+ ('Unknown',
+ 'Random Access block device',
+ 'Related to a network',
+ 'Related to serial access device',
+ 'Related to RAM');
+
+(************************************************
+PROCEDURE Extended_Error_Code (VAR Error_Code : INTEGER;
+ VAR Error_Class : Byte;
+ VAR Error_Locus : Byte);
+
+{ Following an error code returned by an MS-DOS function call or
+ I/O function, this may be called for amplification on the
+ error }
+
+**********IMPLEMENTATION**********************)
+
+Var index : integer;
+
+PROCEDURE Extended_Error_Code (VAR Error_Code : INTEGER;
+ VAR Error_Class : Byte;
+ VAR Error_Locus : Byte);
+
+Var Regs : Registers;
+
+BEGIN
+ Regs.AH := $59;
+ Regs.BX := 0;
+ Intr($21, Regs);
+ Error_Code := Regs.AX;
+ Error_Class := Regs.BH;
+ Error_Locus := Regs.CH;
+END;
+(*********************
+BEGIN
+END.
+*********************)
+(***********************************************************************
+-------
+
+Addressees in 'BOETT.ADD' are: I2010506%DBSTU1.bitnet@cunyvm.cuny.edu
+************************************************************************)
+
+{***************************************************************************}
+{ Name : GET_DOS_VERSION }
+{ }
+{ Purpose : To obtain the version number of DOS. }
+{ }
+{ Input : none }
+{ }
+{ Output : dos_major_ver : version of dos }
+{ dos_minor_ver : level of dos_major_ver }
+{ }
+{ Example : DOS 3.1 would yield [dos_major_ver = 3 }
+{ dos_minor_ver = 10] }
+{***************************************************************************}
+procedure get_dos_version(var maj, min : integer);
+var regs : registers;
+begin
+ with regs do begin
+ ah:=$30;
+ msdos(regs);
+ maj := al;
+ min := ah;
+ end;
+end;
+
+
+procedure GetDOSErrorMessage (code : integer; var message : string);
+ begin
+ case code of
+ 0 : message := 'OK';
+ 2 : message := 'Datei nicht gefunden';
+ 3 : message := 'Suchweg nicht gefunden';
+ 5 : message := 'Zugriff verweigert';
+ 6 : message := 'Handle nicht definiert/ungltig';
+ 8 : message := 'nicht gengend Hauptspeicher frei';
+ 10 : message := 'Environment-Parameter ungltig';
+ 11 : message := 'ungltiges Befehlsformat';
+ 18 : message := 'keine weiteren Dateieintrge/Datei nicht vorhanden';
+ else begin
+ Str(code,message);
+ message := 'DOS - Fehler Nr. ' + message + ' = ' + Error_Code[code];
+ end;
+ end;
+ end;
+
+procedure GetCompleteDOSErrorMessage (code : integer;
+ var Error,error_cl,error_l : string);
+ var class,locus : byte;
+ fehler : integer;
+ begin
+ Extended_Error_Code(fehler,class,locus);
+ Error := Error_Code[fehler];
+ error_cl := Error_Class[class];
+ error_l := Error_Locus[locus];
+ if code <> fehler then writeln('NANUNANA!!!');
+ end;
+
+
+
+procedure read_value(var datei : text; var wert : extended);
+
+ type vorzeichen = (plus,minus,none);
+ zeichentyp = (trennung,sign,value,point,garbage);
+
+ const o_komma = Ord(',');
+ o_space = Ord(' ');
+ o_semi = Ord(';');
+ o_lf = 10;
+ o_cr = 13;
+ o_null = Ord('0');
+ o_neun = Ord('9');
+ o_punkt = Ord('.');
+ o_e_kl = Ord('e');
+ o_e_gr = Ord('E');
+ o_plus = Ord('+');
+ o_minus = Ord('-');
+ null = '0';
+
+ var puffer1,puffer2 : char;
+ weiter,raus,basic : boolean;
+ akt_vorz,alt_vorz,
+ vorz2 : vorzeichen;
+ puffer_art,
+ puffer_art_2 : zeichentyp;
+
+ function CheckDelimiter(test : char) : boolean;
+ var o_test : byte;
+ begin
+ o_test := Ord(test);
+ if ((o_test=o_komma) or (o_test=o_space) or (o_test=o_semi)
+ or (o_test=o_lf) or (o_test=o_cr))
+ then CheckDelimiter := true
+ else CheckDelimiter := false;
+ end;
+
+ function CheckValue(test : char) : boolean;
+ var o_test : byte;
+ begin
+ o_test := Ord(test);
+ if ((o_test>=o_null) and (o_test<=o_neun))
+ then CheckValue := true
+ else CheckValue := false;
+ end;
+
+ function CheckPunkt(test : char) : boolean;
+ begin
+ if (Ord(test)=o_punkt)
+ then CheckPunkt := true
+ else CheckPunkt := false;
+ end;
+
+ function CheckE(test : char) : boolean;
+ var o_test : byte;
+ begin
+ o_test := Ord(test);
+ if ((o_test=o_e_kl) or (o_test=o_e_gr))
+ then CheckE := true
+ else CheckE := false;
+ end;
+
+ function CheckPlus(test : char) : boolean;
+ begin
+ if (Ord(test)=o_plus)
+ then CheckPlus := true
+ else CheckPlus := false;
+ end;
+
+ function CheckMinus(test : char) : boolean;
+ begin
+ if (Ord(test)=o_minus)
+ then CheckMinus := true
+ else CheckMinus := false;
+ end;
+
+ function CheckIOResult : boolean;
+ var code : integer;
+ error_m,error_cl,error_l : string;
+ begin
+ {$I-}
+ code := IOResult;
+ if code<>0
+ then begin
+ CheckIOResult := false;
+ if DOS_Major_Version >= 3 {UNIT ENV}
+ then
+ begin
+ GetCompleteDOSErrorMessage(code,error_m,error_cl,error_l);
+ writeln('I/O-Fehler ',code,' --> ',error_m);
+ writeln('I/O-Fehler-Klasse ',error_cl);
+ writeln('I/O-Fehler-Locus ',error_l);
+ end
+ else
+ begin
+ GetDOSErrorMessage(code,error_m);
+ writeln('I/O-Fehler ',code,' --> ',error_m);
+ end;
+ StandBy;
+ end
+ else CheckIOResult := true;
+ end;
+
+ function puffertest(puffer : char; var vorz : vorzeichen) : zeichentyp;
+ begin {of puffertest}
+ puffertest := garbage;
+ if CheckMinus(puffer) then vorz := minus
+ else if CheckPlus(puffer)
+ then vorz := plus
+ else vorz := none;
+ if vorz<>none
+ then puffertest := sign
+ else if CheckDelimiter(puffer)
+ then puffertest := trennung
+ else if CheckPunkt(puffer)
+ then puffertest := point
+ else if CheckValue(puffer) then puffertest := value;
+ end; {of puffertest}
+
+
+ procedure skip(var datei : text; var vorz : vorzeichen; var puffer : char;
+ var puffertyp : zeichentyp);
+ begin {of skip}
+ {$I-}
+ vorz := none;
+ puffertyp := garbage;
+ repeat
+ if eoln(datei) then readln(datei);
+ read(datei,puffer);
+ if not CheckIOResult then begin
+ ende(raus);
+ if raus then halt(300);
+ end;
+
+ puffertyp := puffertest(puffer,vorz);
+ {
+ case vorz of
+ plus : write('P');
+ minus: write('M');
+ none : write('n');
+ end;
+ }
+ until ((puffertyp<>garbage) or eof(datei));
+ end; {of skip}
+
+
+ procedure PickUp(var datei : text; basic : boolean; puffer : char;
+ VAR wert : extended );
+
+ var zahl : string;
+ stop,punkt,raus : boolean;
+ puffer2 : char;
+ fehler : integer;
+ begin {of PickUp}
+ {$I-}
+ zahl := '';
+ punkt := false;
+ stop := false;
+ if basic then begin zahl := '0.'; punkt := true; end;
+ zahl := zahl+puffer;
+ while ((not eoln(datei) and (not stop))) do
+ begin
+ read(datei,puffer);
+ if not CheckIOResult then begin
+ ende(raus);
+ if raus then halt(300);
+ end;
+ if ((CheckPunkt(puffer) and punkt) or CheckDelimiter(puffer))
+ then stop := true
+ else if (CheckValue(puffer) or (CheckPunkt(puffer) and (not punkt)))
+ then begin
+ zahl := zahl+puffer;
+ if CheckPunkt(puffer) then punkt := true;
+ end
+ else if (not CheckE(puffer))
+ then stop := true
+ else begin
+ if (not eoln(datei))
+ then begin
+ read(datei,puffer2);
+ if not CheckIOResult
+ then begin
+ ende(raus);
+ if raus then halt(300);
+ end;
+ if (CheckMinus(puffer2) or (CheckPlus(puffer2)))
+ then zahl := zahl+puffer+puffer2
+ else stop := true;
+ end
+ else stop := true;
+ end;
+ end;
+ Val(zahl,wert,fehler);
+ if fehler<>0 then begin
+ HighVideo;
+ writeln('Fehler beim Einlesen von >',zahl,'< an Position ',fehler,' !!');
+ NormVideo;
+ StandBy;
+ ende(raus);
+ if raus then halt(301);
+ end;
+ end; {of PickUp}
+
+ begin {of READ_VALUE}
+ {$I-}
+ akt_vorz := none;
+ alt_vorz := none;
+
+ weiter := true;
+ wert :=0;
+
+ while ((not eof(datei)) and weiter) do
+ begin
+ basic := false;
+ alt_vorz := akt_vorz;
+ skip(datei,akt_vorz,puffer1,puffer_art);
+ case puffer_art of
+ value : begin
+ akt_vorz := alt_vorz;
+ PickUp(datei,basic,puffer1,wert);
+ weiter := false;
+ end;
+ point : begin
+ read(datei,puffer2);
+ if not CheckIOResult then begin
+ ende(raus);
+ if raus then halt(300);
+ end;
+ puffer_art_2 := puffertest(puffer2,vorz2);
+ case puffer_art_2 of
+ value : begin
+ basic := true;
+ akt_vorz := alt_vorz;
+ PickUp(datei,basic,puffer2,wert);
+ weiter := false;
+ end;
+ sign : akt_vorz := vorz2;
+ trennung : akt_vorz := none;
+ point : akt_vorz := none;
+ end;
+ end;
+ trennung : akt_vorz := none;
+ sign : begin
+ read(datei,puffer2);
+ if not CheckIOResult then begin
+ ende(raus);
+ if raus then halt(300);
+ end;
+ puffer_art_2 := puffertest(puffer2,vorz2);
+ case puffer_art_2 of
+ value : begin
+ basic := false;
+ PickUp(datei,basic,puffer2,wert);
+ weiter := false;
+ end;
+ sign : akt_vorz := vorz2;
+ trennung : akt_vorz := none;
+ point : begin
+ read(datei,puffer2);
+ if not CheckIOResult
+ then begin
+ ende(raus);
+ if raus then halt(300);
+ end;
+ puffer_art_2 := puffertest(puffer2,vorz2);
+ case puffer_art_2 of
+ value : begin
+ basic := true;
+ PickUp(datei,basic,puffer2,wert);
+ weiter := false;
+ end;
+ sign : akt_vorz := vorz2;
+ trennung : akt_vorz := none;
+ point : akt_vorz := none;
+ end;
+ end;
+ end;
+ end;
+ end;
+ end;
+ if akt_vorz=minus then wert :=-wert;
+ {$I+}
+ end; {of READ_VALUE}
+
+procedure read_value_eof(var datei : text; var wert : extended; var ende : boolean);
+ begin
+ ende := eof(datei);
+ if not ende then begin
+ read_value(datei,wert);
+ ende := eof(datei);
+ end;
+ end;
+
+(****************************************************************************)
+(* Zehner-Logarithmus von 'x': *)
+
+FUNCTION lg (x: extended): extended;
+
+CONST rez_ln_10 = 0.4342944819; (* rez_ln_10 = 1 / ln(10) *)
+
+BEGIN
+ lg :=0;
+ IF x > 0.0 THEN
+ lg := Ln(x) * rez_ln_10
+ ELSE
+ {CalcError(3, 'lg(x): x <= 0')}
+ writeln('Argumentfehler: lg(x): x <= 0 !!!')
+END;
+
+(****************************************************************************)
+(* Berechnung von 'x hoch y': *)
+
+FUNCTION x_hoch_y (x, y: extended): extended;
+
+VAR ganz_y: INTEGER;
+
+BEGIN
+ IF (x <> 0.0) OR (y <> 0.0) THEN
+ IF x > 0.0 THEN
+ x_hoch_y := Exp(y * Ln(x))
+ ELSE
+ BEGIN
+ ganz_y := Trunc(y);
+ IF ABS(y) > ABS(ganz_y) THEN
+ {CalcError(3, 'x_hoch_y(x,y): nur ganzzahlige Exponenten zulssig bei x<0')}
+ writeln('x_hoch_y(x,y): nur ganzzahlige Exponenten zulssig bei x<0')
+ ELSE
+ IF x <> 0.0 THEN
+ IF (ganz_y MOD 2) = 0 THEN
+ x_hoch_y := Exp(Ln(ABS(x)) * y)
+ ELSE
+ x_hoch_y := -Exp(Ln(ABS(x)) * y) (* ungerader Exponent *)
+ ELSE
+ x_hoch_y := 0
+ END
+ ELSE
+ {CalcError(3, 'x_hoch_y(x,y): x = 0 und y = 0')}
+ writeln('x_hoch_y(x,y): x = 0 und y = 0')
+END;
+
+(****************************************************************************)
+
+
+(****************************************************************************)
+procedure process_file(seite : styp;
+ var fertig : boolean;
+ rechteachse,xlogar,ylogar : boolean;
+ var aus : text);
+
+
+ function betest(t,v : string): boolean;
+ var t1 : string;
+ i : byte;
+ begin
+ t1:=t;
+ for i:=1 to length(t) do t1[i]:=UpCase(t[i]);
+ while t1[1]=' ' do Delete(t1,1,1);
+ if t1=v then betest := true else betest :=false;
+ end;
+
+ const b1='BEGIN';
+ e1='END';
+
+ var einn,symbol,test : string;
+ ein : text;
+ f : SearchRec;
+ anzahl : longint;
+ ch : char;
+ sym,linie,quadratic,clipping,ende : boolean;
+ x,y,xa,ya : extended;
+
+ begin {of process_file}
+ writeln('Ende durch leere Eingabe !!');
+ repeat
+ write('Daten -Datei (TechPlot-Format!!) : ');
+ readln(einn);
+ if einn='' then fertig:=true;
+ FindFirst(einn,Archive,F);
+ until ((DOSError=0) or fertig);
+
+ if not fertig then
+ begin
+ anzahl :=0;
+ assign(ein,einn);
+ repeat
+ write('mit Plotsymbol (j/n) ? ');
+ readln(ch);
+ ch := UpCase(ch);
+ until ((ch='J') or (ch='N'));
+ if ch='J' then sym := true else sym := false;
+ repeat
+ write('durchgezogene Linie (j/n) ? ');
+ readln(ch);
+ ch := UpCase(ch);
+ until ((ch='J') or (ch='N'));
+ if ch='J' then linie := true else linie := false;
+ if linie then
+ begin
+ repeat
+ write('Quadratische Interpolation (1) oder Polygonzug (2) ? ');
+ readln(ch);
+ ch := UpCase(ch);
+ until ((ch='1') or (ch='2'));
+ if ch='1' then quadratic := true else quadratic := false;
+ repeat
+ write('Clipping ntig (Achtung, das dauert LANGE) (j/n) ? ');
+ readln(ch);
+ ch := UpCase(ch);
+ until ((ch='J') or (ch='N'));
+ if ch='J' then clipping := true else clipping := false;
+ end;
+
+ if sym then
+ begin
+ write('Plotsymbol (LaTeX-Text) : ');
+ readln(symbol);
+ reset(ein);
+ writeln(aus,'%Datei ',einn,' (Symbole)');
+ repeat
+ readln(ein,test);
+ writeln(aus,'%% ',test);
+ until ((betest(test,b1)) or eof(ein));
+ ende := false;
+ if eof(ein) then ende := true;
+ write(aus,'% Daten fuer ');
+ if rechteachse then
+ if (seite=left)
+ then write(aus,'linke ')
+ else write (aus,'rechte ');
+ writeln(aus,'y-Achse ...');
+ if not ende then
+ begin
+ writeln('\multiput {',symbol,'} at ');
+ writeln(aus,'\multiput {',symbol,'} at %');
+ end;
+ while not ende do
+ begin
+ read_value_eof(ein,x,ende);
+ read_value_eof(ein,y,ende);
+ if not ende then begin
+ readln(ein);
+ Inc(anzahl);
+ if xlogar then x:=lg(x);
+ if ylogar then y:=lg(y);
+ writeln(aus,' ',x:8:6,' ',y:8:6,' %');
+ writeln(x:8:5,' ',y:8:4);
+ end
+ else begin
+ writeln(' /');
+ writeln(aus,' /');
+ end;
+ end;
+ end;
+ if linie then
+ begin
+ reset(ein);
+ anzahl :=0;
+ writeln(aus,'%Datei ',einn,' (Linie)');
+ repeat
+ readln(ein,test);
+ writeln(aus,'%% ',test);
+ until ((betest(test,b1)) or eof(ein));
+ ende := false;
+ if eof(ein) then ende := true;
+
+ if clipping then writeln(aus,'\inboundscheckon');
+ if quadratic then writeln(aus,'\setquadratic')
+ else writeln(aus,'\setlinear');
+ writeln(aus,'\plot ');
+ while not ende do
+ begin
+ read_value_eof(ein,x,ende);
+ read_value_eof(ein,y,ende);
+ if not ende then begin
+ readln(ein);
+ Inc(anzahl);
+ if xlogar then x:=lg(x);
+ if ylogar then y:=lg(y);
+ xa :=x;
+ ya :=y;
+ writeln(aus,' ',x:8:6,' ',y:8:6,' %');
+ writeln(x:8:4,' ',y:8:4);
+ end;
+ end;
+ if quadratic then
+ if not odd(anzahl) then
+ writeln(aus,xa*1.00001:8:6,' ',ya*1.00001:8:6,' %');
+ writeln(aus,'/');
+ if clipping then writeln(aus,'\inboundscheckoff');
+ end;
+ close(ein);
+ end;
+ end; {of process_file}
+
+ procedure Einheiten(var unitx,unity,unitry : real; breite,hoehe : real;
+ rechteachse,xlog,ylog,rylog : boolean);
+ begin
+ if xlog then unitx := breite/(lg(xmax)-lg(xmin))
+ else unitx := breite/(xmax-xmin);
+ if ylog then unity := HOEHE/(lg(ymax)-lg(ymin))
+ else unity := hoehe/(ymax-ymin);
+ if rechteachse then if rylog then unitry := hoehe/(lg(rymax)-lg(rymin))
+ else unitry := hoehe/(rymax-rymin)
+ else unitry :=0;
+ end;
+
+ procedure skala (var aus : text;
+ seite : styp;
+ unitx,unity : real;
+ xlog,ylog,rechteachse,xkreuz,ykreuz : boolean;
+ xmin,xmax,dx,dxsub,ymin,ymax,dy,dysub : real;
+ xdez,ydez :byte;
+ unten,oben,rechts,links : string);
+
+ procedure Log_schrift(var aus: text; min,max : real;
+ markiere,kreuz : boolean);
+ {$I float.typ}
+ var ort,o2 : float;
+ expo,code : integer;
+ stellen,i : byte;
+ ex : string;
+ begin
+ writeln(aus,' ticks logged ');
+ if kreuz then write(aus,'andacross ');
+ if markiere then writeln(aus,'numbered ') else writeln(aus,'unlabeled ');
+
+ if markiere
+ then
+ begin {Zahlen dranschreiben}
+ write(aus,'withvalues ');
+ ort := min/10;
+ repeat
+ Str(lg(ort):1:0,ex);
+ Val(ex,expo,code);
+ {expo := trunc(lg(ort));}
+ o2 := (x_hoch_y(10,expo));
+ if ((o2>=min) and (o2<=max))
+ then write(aus,'$10^{',expo,'}$ ');
+ ort := 2*o2;
+ if ((ort<=max) and (ort>=min))
+ then write(aus,'{\small 2} ');
+ ort := 3*o2;
+ if ((ort>=min) and (ort<=max))
+ then write(aus,'{\small 3} ');
+ ort := 5*o2;
+ if ((ort>=min) and (ort<=max))
+ then write(aus,'{\small 5} ');
+ ort := 10*o2;
+ until ort>max;
+ writeln(aus,' /');
+ end;
+
+ {ticks setzen, normal lang}
+ write(aus,' at ');
+ ort := min/10;
+ repeat
+ Str(lg(ort):1:0,ex);
+ Val(ex,expo,code);
+ {expo := trunc(lg(ort));}
+ o2 := (x_hoch_y(10,expo));
+ if expo<0 then stellen := abs(expo) else stellen :=0;
+ if ((o2>min) and (o2<max))
+ then write(aus,x_hoch_y(10,expo):1:stellen,' ');
+ {o2 := ort;}
+ ort := 2*o2;
+ if ((ort<max) and (ort>min))
+ then write(aus,ort:1:stellen,' ');
+ ort := 3*o2;
+ if ((ort>min) and (ort<max))
+ then write(aus,ort:1:stellen,' ');
+ ort := 5*o2;
+ if ((ort>min) and (ort<max))
+ then write(aus,ort:1:stellen,' ');
+ ort := 10*o2;
+ until ort>max;
+ writeln(aus,' /');
+
+ {ticks, immer ohne Beschriftung, lang }
+ writeln(aus,' unlabeled at ');
+ ort := min/10;
+ repeat
+ Str(lg(ort):1:0,ex);
+ Val(ex,expo,code);
+ {expo := trunc(lg(ort));}
+ o2 := (x_hoch_y(10,expo));
+ if expo<0 then stellen := abs(expo) else stellen :=0;
+ ort := 4*o2;
+ if ((ort>min) and (ort<max))
+ then write(aus,ort:1:stellen,' ');
+ for i:=6 to 9 do
+ begin
+ ort := i*o2;
+ if ((ort>min) and (ort<max))
+ then write(aus,ort:1:stellen,' ');
+ end;
+ ort := 10*o2;
+ until ort>max;
+ writeln(aus,' /');
+
+ {ticks, ohne Beschriftung, kurz }
+ writeln(aus,' unlabeled short at ');
+ ort := min/10;
+ repeat
+ Str(lg(ort):1:0,ex);
+ Val(ex,expo,code);
+ {expo := trunc(lg(ort));}
+ o2 := (x_hoch_y(10,expo));
+ if expo<=0 then stellen := abs(expo)+1 else stellen :=0;
+ for i:=1 to 9 do
+ begin
+ ort := o2*(1+i*0.2); {1.2, 1.4, ... 2.8 }
+ if ((ort>min) and (ort<max))
+ then write(aus,ort:1:stellen,' ');
+ end;
+ ort :=3.5*o2;
+ if ((ort>min) and (ort<max))
+ then write(aus,ort:1:stellen,' ');
+ ort :=4.5*o2;
+ if ((ort>min) and (ort<max))
+ then write(aus,ort:1:stellen,' ');
+ ort := 10*o2;
+ until ort>max;
+ writeln(aus,' /'); {letztes "at"}
+ writeln(aus,' /'); {Ende von "\axis"}
+ end;
+
+ var con : text;
+ begin
+ assign(con,'con');
+ rewrite(con);
+ write('\setcoordinatesystem units <',unitx:1:5,'mm,',unity:1:5,'mm> point at ');
+ if xlog then write(lg(xmin):1:5,' ')
+ else write(xmin:1:5,' ');
+ if ylog then writeln(lg(ymin):1:5)
+ else writeln(ymin:1:5);
+
+ write('\setplotarea x from ');
+ if xlog then write(lg(xmin):8:5)
+ else write(xmin:8:5);
+ write(' to ');
+ if xlog then write(lg(xmax):8:5)
+ else write(xmax:8:5);
+ write(', y from ');
+ if ylog then write(lg(ymin):8:5)
+ else write(ymin:8:5);
+ write(' to ');
+ if ylog then writeln(lg(ymax):8:5)
+ else writeln(ymax:8:5);
+ if seite=left
+ then
+ begin
+ write('\axis bottom shiftedto y=');
+ if ylog then write(lg(ymin):8:5)
+ else write(ymin:8:5);
+ write(' label {',unten,'} ');
+ if xlog then Log_schrift(con,xmin,xmax,true,xkreuz)
+ else writeln(' ticks numbered from ',
+ xmin:8:xdez,' to ',xmax:8:xdez,' by ',dx:8:xdez,
+ ' unlabeled short from ',xmin:8:xdez,' to ',
+ xmax:8:xdez,' by ',dxsub:8:xdez,' /');
+
+ write('\axis top shiftedto y=');
+ if ylog then write(lg(ymax):8:5)
+ else write(ymax:8:5);
+ write(' label {',oben,'} ');
+ if xlog then Log_schrift(con,xmin,xmax,false,false)
+ else writeln(' ticks unlabeled from ',
+ xmin:8:xdez,' to ',xmax:8:xdez,' by ',dx:8:xdez,
+ ' unlabeled short from ',xmin:8:xdez,' to ',
+ xmax:8:xdez,' by ',dxsub:8:xdez,' /');
+
+ write('\axis left shiftedto x=');
+ if xlog then write(lg(xmin):8:5)
+ else write(xmin:8:5);
+ write(' label {',links,'} ');
+ if ylog then Log_schrift(con,ymin,ymax,true,ykreuz)
+ else writeln(' ticks numbered from ',
+ ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez,
+ ' unlabeled short from ',ymin:8:ydez,' to ',
+ ymax:8:ydez,' by ',dysub:8:ydez,' /');
+ if not rechteachse then
+ begin
+ write('\axis right shiftedto x=');
+ if xlog then write(lg(xmax):8:5)
+ else write(xmax:8:5);
+ write(' label {',rechts,'} ');
+ if ylog then Log_schrift(con,ymin,ymax,false,false)
+ else writeln(' ticks unlabeled from ',
+ ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez,
+ ' unlabeled short from ',ymin:8:ydez,' to ',
+ ymax:8:ydez,' by ',dysub:8:ydez,' /');
+ end;
+ end
+ else
+ begin
+ write('\axis right shiftedto x=');
+ if xlog then write(lg(xmax):8:5)
+ else write(xmax:8:5);
+ write(' label {',rechts,'} ');
+ if ylog then Log_schrift(con,ymin,ymax,true,ykreuz)
+ else writeln(' ticks numbered from ',
+ ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez,
+ ' unlabeled short from ',ymin:8:ydez,' to ',
+ ymax:8:ydez,' by ',dysub:8:ydez,' /');
+ end;
+ close(con);
+ write(aus,'\setcoordinatesystem units <',unitx:1:5,'mm,',unity:1:5,'mm> point at ');
+ if xlog then write(aus,lg(xmin):1:6,' ')
+ else write(aus,xmin:1:6,' ');
+ if ylog then writeln(aus,lg(ymin):1:6)
+ else writeln(aus,ymin:1:6);
+
+ write(aus,'\setplotarea x from ');
+ if xlog then write(aus,lg(xmin):1:6)
+ else write(aus,xmin:1:6);
+ write(aus,' to ');
+ if xlog then write(aus,lg(xmax):1:6)
+ else write(aus,xmax:1:6);
+ write(aus,', y from ');
+ if ylog then write(aus,lg(ymin):1:6)
+ else write(aus,ymin:8:5);
+ write(aus,' to ');
+ if ylog then writeln(aus,lg(ymax):1:6)
+ else writeln(aus,ymax:1:6);
+ if seite=left
+ then
+ begin
+ write(aus,'\axis bottom shiftedto y=');
+ if ylog then write(aus,lg(ymin):1:6)
+ else write(aus,ymin:1:6);
+ write(aus,' label {',unten,'} ');
+ if xlog then Log_schrift(aus,xmin,xmax,true,xkreuz)
+ else begin
+ write(aus,' ticks ');
+ if xkreuz then write(aus,'andacross ');
+ writeln(aus,'numbered from ',
+ xmin:1:xdez,' to ',xmax:1:xdez,' by ',dx:1:xdez,
+ ' unlabeled short from ',xmin:1:xdez+3,' to ',
+ xmax:1:xdez+3,' by ',dxsub:1:xdez+3,' /');
+ end;
+
+ write(aus,'\axis top shiftedto y=');
+ if ylog then write(aus,lg(ymax):1:6)
+ else write(aus,ymax:1:6);
+ write(aus,' label {',oben,'} ');
+ if xlog then Log_schrift(aus,xmin,xmax,false,false)
+ else writeln(aus,' ticks unlabeled from ',
+ xmin:1:xdez+2,' to ',xmax:1:xdez+2,' by ',dx:1:xdez+2,
+ ' unlabeled short from ',xmin:1:xdez+3,' to ',
+ xmax:1:xdez+3,' by ',dxsub:1:xdez+3,' /');
+
+ write(aus,'\axis left shiftedto x=');
+ if xlog then write(aus,lg(xmin):1:6)
+ else write(aus,xmin:1:6);
+ write(aus,' label {',links,'} ');
+ if ylog then Log_schrift(aus,ymin,ymax,true,ykreuz)
+ else begin
+ write(aus,' ticks ');
+ if ykreuz then write(aus,'andacross ');
+ writeln(aus,'numbered from ',
+ ymin:1:ydez,' to ',ymax:1:ydez,' by ',dy:1:ydez,
+ ' unlabeled short from ',ymin:1:ydez+3,' to ',
+ ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /');
+ end;
+ if not rechteachse then
+ begin
+ write(aus,'\axis right shiftedto x=');
+ if xlog then write(aus,lg(xmax):1:6)
+ else write(aus,xmax:1:6);
+ write(aus,' label {',rechts,'} ');
+ if ylog then Log_schrift(aus,ymin,ymax,false,false)
+ else writeln(aus,' ticks unlabeled from ',
+ ymin:1:ydez+2,' to ',ymax:1:ydez+2,' by ',dy:1:ydez+2,
+ ' unlabeled short from ',ymin:1:ydez+3,' to ',
+ ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /');
+ end;
+ end
+ else
+ begin
+ write(aus,'\axis right shiftedto x=');
+ if xlog then write(aus,lg(xmax):1:6)
+ else write(aus,xmax:1:6);
+ write(aus,' label {',rechts,'} ');
+ if ylog then Log_schrift(aus,ymin,ymax,true,ykreuz)
+ else begin
+ write(aus,' ticks ');
+ if ykreuz then write(aus,'andacross ');
+ writeln(aus,'numbered from ',
+ ymin:1:ydez,' to ',ymax:1:ydez,' by ',dy:1:ydez,
+ ' unlabeled short from ',ymin:1:ydez+3,' to ',
+ ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /');
+ end;
+ end;
+
+ end;
+
+
+
+begin
+ writeln;
+ writeln(' Datei-Konverter Daten -->PiCTeX input ... ');
+ writeln('(c) Christian Bttger, Inst. f. Metallphysik, TU Braunschweig');
+ writeln(' Version 1.0, 3.7.1991 ');
+ writeln;
+ Get_Dos_Version(dos_major_version,dos_minor_version);
+
+ write('PiCTeX-Datei : ');readln(ausn) ;
+ assign(aus,ausn);
+ rewrite(aus);
+
+ writeln;
+ write('X-Achse : Minimum = ');readln(xmin);
+ write('X-Achse : Maximum = ');readln(xmax);
+ repeat
+ write('x-Achse logarithmisch (j/n) ? ');
+ readln(ch);
+ ch := UpCase(ch);
+ until ((ch='N') or (ch='J'));
+ if ch='J' then xlog := true else xlog := false;
+ if not xlog
+ then begin
+ write('X-Achse : Schrittweite = ');readln(dx);
+ write('X-Achse : Schrittweite Sub-Unterteilungen = ');readln(dxsub);
+ write('X-Achse : Dezimalstellen der Beschriftung = ');readln(xdez);
+ end;
+
+ repeat
+ write('x-Achse Markierungen durchziehen (Gitter) (j/n) ? ');
+ readln(ch);
+ ch := UpCase(ch);
+ until ((ch='N') or (ch='J'));
+ if ch='J' then xkreuz := true else xkreuz := false;
+
+ writeln;
+ writeln('Eingabe der Daten fr die (linke) Y-Achse ...');
+ write('y-Achse : Minimum = ');readln(ymin);
+ write('y-Achse : Maximum = ');readln(ymax);
+ repeat
+ write('(linke) y-Achse logarithmisch (j/n) ? ');
+ readln(ch);
+ ch := UpCase(ch);
+ until ((ch='N') or (ch='J'));
+ if ch='J' then ylog := true else ylog := false;
+ if not ylog
+ then begin
+ write('y-Achse : Schrittweite = ');readln(dy);
+ write('y-Achse : Schrittweite Sub-Unterteilungen = ');readln(dysub);
+ write('y-Achse : Dezimalstellen der Beschriftung = ');readln(ydez);
+ end;
+ repeat
+ write('(linke) y-Achse Markierungen durchziehen (Gitter) (j/n) ? ');
+ readln(ch);
+ ch := UpCase(ch);
+ until ((ch='N') or (ch='J'));
+ if ch='J' then ykreuz := true else ykreuz := false;
+
+ writeln;
+ repeat
+ write('zweite unabhngige Skala auf rechter y-Achse (j/n) ? ');
+ readln(ch);
+ ch := UpCase(ch);
+ until ((ch='N') or (ch='J'));
+ if ch='J' then rechteachse :=true else rechteachse:=false;
+ if rechteachse then
+ begin
+ writeln;
+ write('rechte y-Achse : Minimum = ');readln(rymin);
+ write('rechte y-Achse : Maximum = ');readln(rymax);
+ repeat
+ write('rechte y-Achse logarithmisch (j/n) ? ');
+ readln(ch);
+ ch := UpCase(ch);
+ until ((ch='N') or (ch='J'));
+ if ch='J' then rylog := true else rylog := false;
+ if not rylog
+ then begin
+ write('rechte y-Achse : Schrittweite = ');readln(rdy);
+ write('rechte y-Achse : Schrittweite Sub-Unterteilungen = ');readln(rdysub);
+ write('rechte y-Achse : Dezimalstellen der Beschriftung = ');readln(rydez);
+ end;
+ repeat
+ write('rechte y-Achse Markierungen durchziehen (Gitter) (j/n) ? ');
+ readln(ch);
+ ch := UpCase(ch);
+ until ((ch='N') or (ch='J'));
+ if ch='J' then rykreuz := true else rykreuz := false;
+ writeln;
+ end;
+ write('Beschriftung Unterkante : ');readln(unten);
+ write('Beschriftung Oberkante : ');readln(oben);
+ write('Beschriftung rechts : ');readln(rechts);
+ write('Beschriftung links : ');readln(links);
+ writeln;
+
+ write('Breite des Bildes in mm = ');readln(breite);
+ write('Hhe des Bildes in mm = ');readln(hoehe);
+ writeln;
+ write('Unterschrift des Bildes (\caption) : '); readln(unterschrift);
+ write('berschrift des Bildes : '); readln(ueberschrift);
+ write('LaTeX-Label des Bildes : ');readln(labelstr);
+ repeat
+ writeln('Sprache des Textes:');
+ write(' a=austrian, e=english, f=french, g=german, u=USenglish ? ');
+ readln(sprache);
+ sprache := UpCase(sprache);
+ until sprache in ['A','E','F','G','U'];
+
+ writeln;
+ writeln('und nun die Zwischenspeicherung ...');
+ savename :='';
+ repeat
+ write('Dateiname fr \savelinesandcurves bzw. \replot = ');
+ readln(savename);
+ until savename<>'';
+ write('Kommentar im Save-File = ');
+ readln(savekomm);
+ Einheiten(unitx,unity,unitry,breite,hoehe,rechteachse,xlog,ylog,rylog);
+
+ writeln('\begin{figure}[htb]');
+ writeln('\originalTeX');
+ writeln('\[ %horizontal zentrierte Ausgabe an');
+ writeln('\beginpicture');
+
+ writeln(aus,'\begin{figure}[htb]');
+ writeln(aus,'\originalTeX');
+ writeln(aus,'\[ %zentrierte Ausgabe an');
+ writeln(aus,'\beginpicture');
+ writeln(aus,'\savelinesandcurves on "',savename,'"');
+ writeln(aus,'\writesavefile {',savekomm,'}');
+
+ skala (aus,left,
+ unitx,unity,
+ xlog,ylog,rechteachse,xkreuz,ykreuz,
+ xmin,xmax,dx,dxsub,ymin,ymax,dy,dysub,xdez,ydez,
+ unten,oben,rechts,links);
+
+
+ writeln(aus,'\plotheading {',ueberschrift,'}');
+ writeln(aus,'%\replot "',savename,'"');
+
+ fertig := false;
+ repeat
+ writeln;
+ if rechteachse then writeln('Nur Daten fr die LINKE (!!) y- Achse jetzt !!!!');
+ process_file(left,fertig,rechteachse,xlog,ylog,aus);
+ until fertig;
+ if rechteachse then
+ begin
+ skala (aus,right,
+ unitx,unitry,
+ xlog,rylog,rechteachse,xkreuz,rykreuz,
+ xmin,xmax,dx,dxsub,rymin,rymax,rdy,rdysub,xdez,rydez,
+ unten,oben,rechts,links);
+
+ fertig := false;
+ repeat
+ writeln;
+ writeln('Nur Daten fr die RECHTE (!!) y- Achse ab jetzt !!!!');
+ process_file(right,fertig,rechteachse,xlog,rylog,aus);
+ until fertig;
+ end;
+
+ writeln(aus,'\dontsavelinesandcurves');
+ writeln(aus,'\endpicture');
+ writeln(aus,'\]');
+ writeln(aus,'\germanTeX');
+ write(aus,'\selectlanguage{\');
+ case sprache of
+ 'A' : writeln(aus,'austrian}');
+ 'E' : writeln(aus,'english}');
+ 'F' : writeln(aus,'french}');
+ 'G' : writeln(aus,'german}');
+ 'U' : writeln(aus,'USenglish}');
+ end;
+
+ writeln(aus,'\caption{',unterschrift,' \label{',labelstr,'}}');
+ writeln(aus,'\end{figure}');
+
+ writeln('\endpicture');
+ writeln('\]');
+ writeln('\germanTeX');
+ write('\selectlanguage{\');
+ case sprache of
+ 'A' : writeln('austrian}');
+ 'E' : writeln('english}');
+ 'F' : writeln('french}');
+ 'G' : writeln('german}');
+ 'U' : writeln('USenglish}');
+ end;
+
+ writeln('\caption{',unterschrift,' \label{',labelstr,'}}');
+ writeln('\end{figure}');
+
+ close(aus);
+end.
+
+
+
+
+
+
+