DEFINITION MODULE FFormAus;
(*========================================================================*)
(* WICHTIG: BITTE NUR DIE DATEI XFormAus.mod.m2cc EDITIEREN !!! *)
(*========================================================================*)
(* *)
(* Prozeduren zur Ausgabe von N Parametern (dWriteN) in eine Datei *)
(* --------------------------------------------------------------- *)
(* *)
(* Die Art der Parameter und die Form deren Ausgabe wird dabei "uber den *)
(* String Format "ubergeben. *)
(* *)
(* Zul"assige Parameter sind : *)
(* *)
(* CARDINAL / LONGCARD : FORMAT = Cn *)
(* INTEGER : FORMAT = In *)
(* LONGREAL : FORMAT = Fn.m|En.m (Fest/Flie\3kommadarst.) *)
(* CHAR / ARRAY OF CHAR : FORMAT = S *)
(* CHAR / ARRAY OF CHAR : FORMAT = An (wie FORTRAN) *)
(* *)
(* n : Feldbreite *)
(* m : Nachkommastellen bei LONGREAL-Parametern *)
(* *)
(* Bei Angabe von "An" wird linksb"uendig ausgeschrieben und, wenn die *)
(* Zeichenkette zu kurz ist, mit Leerzeichen aufgef"ullt. *)
(* Ist die Zeichenkette zu lang wird sie abgeschnitten. *)
(* Wird A ohne Feldbreite angegeben wird der entsprechende Parameter wie *)
(* bei "S" ausgegeben *)
(* *)
(* Zus"atzlich kann durch das Zeichen "/" ein Zeilenvorschub erreicht *)
(* werden und durch Xn die Ausgabe von n Leerzeichen. *)
(* Alle Elemente des Formatstrings m"ussen dabei (Au\3er bei den Zeilen- *)
(* vorsch"uben) durch Kommata getrennt werden. *)
(* *)
(* Beispiel : *)
(* *)
(* Write3('//,S,C3,X5,F12.5,///','i,x : ',i,x); : *)
(* *)
(* Erzeuge zwei Zeilenvorsch"ube, schreibe 'i,x : ', gebe den *)
(* (CARDINAL-) Parameter i mit drei Ziffern aus, erzeuge 5 Leerzeichen, *)
(* gebe den (LONGREAL-) - Parameter x in Flie\3kommaformat mit einer *)
(* Feldbreit von 12 Zeichen und 6 Nachkommstellen aus und erzeuge dann *)
(* nochmals drei Zeilenvorsch"ube. *)
(* *)
(* Procedures for the output of N parameters (dWriteN) on a file *)
(* --------------------------------------------------------------- *)
(* *)
(* The type of the paraters and their format are transferred to the *)
(* procudure via the string "Format" *)
(* *)
(* Allowed (implemented) parameters are *)
(* *)
(* CARDINAL / LONGCARD : FORMAT = Cn *)
(* INTEGER : FORMAT = In *)
(* REAL/LONGREAL : FORMAT = Fn.m|En.m (floating/exponetial) *)
(* CHAR / ARRAY OF CHAR : FORMAT = S *)
(* CHAR / ARRAY OF CHAR : FORMAT = An (like in FORTRAN) *)
(* *)
(* n : field width *)
(* m : digits after the decimal point for real parameters *)
(* *)
(* For the "An" format a string will be written out left oriented with n *)
(* characters, if n > length(string) blanks are added. If the string is *)
(* too long truncation will take place. *)
(* *)
(* The character "/" created a newline and with Xn you trigger the output *)
(* on n blanks *)
(* Alle elements of the format strings have to be separated by a comma, *)
(* exept for the newline character. This is best described with the *)
(* following example: *)
(* *)
(* Write3('//,S,C3,X5,F12.5,///','i,x : ',i,x); : *)
(* *)
(* generated two new lines, will output 'i,x : ', write cardinal i with *)
(* a fieldwidth of 3 digits, output five blancs and output the real *)
(* parameter x in floating point format with a field width of 12 and 6 *)
(* digit afer the decimal point. Finally creat 3 new lines. *)
(*------------------------------------------------------------------------*)
(* Implementation : Michael Riedl *)
(* Licence : GNU Lesser General Public License (LGPL) *)
(*------------------------------------------------------------------------*)
(* $Id: XFormAus.def.m2cc,v 1.3 2018/03/21 11:05:30 mriedl Exp mriedl $ *)
FROM SYSTEM IMPORT BYTE;
FROM FileSystem IMPORT File;
PROCEDURE SetExpAnz(nExp : CARDINAL);
(*----------------------------------------------------------------*)
(* Setzt die Anzahl der Ziffern im Exponenten von Fliesskomma- *)
(* zahlen in Exponentialschreibweise. Der Wert von nExp sollte *)
(* im Bereich [1..4] liegen, Vorgabe ist 2 was fuer die meisten *)
(* Zwecke ausreichend sein sollte. *)
(* Bitte beachten dass dieser Werte fuer TFormAus und FFormAus *)
(* nicht unabhaengig gewaehlt werden kann da beide Module auf *)
(* dieselben Schreibroutinen in FIO2.mod zurueckgreifen. *)
(* *)
(* Defines the number of digits in the exponent of floating point *)
(* values in sientific or engineering representation. The value *)
(* of nExp shall be in the interval [1..4], default value is 2 *)
(* which should be sufficient for most cases. *)
(* Please not the for TFormAus and FFormAus the value cannot be *)
(* choosen independently. *)
(*----------------------------------------------------------------*)
PROCEDURE dWrite1( Aus : File;
Format : ARRAY OF CHAR;
Par1 : ARRAY OF BYTE);
(*........................................................................*)
PROCEDURE dWrite2( Aus : File;
Format : ARRAY OF CHAR;
Par1 : ARRAY OF BYTE;
Par2 : ARRAY OF BYTE);
(*........................................................................*)
PROCEDURE dWrite3( Aus : File;
Format : ARRAY OF CHAR;
Par1 : ARRAY OF BYTE;
Par2 : ARRAY OF BYTE;
Par3 : ARRAY OF BYTE);
(*........................................................................*)
PROCEDURE dWrite4( Aus : File;
Format : ARRAY OF CHAR;
Par1 : ARRAY OF BYTE;
Par2 : ARRAY OF BYTE;
Par3 : ARRAY OF BYTE;
Par4 : ARRAY OF BYTE);
(*........................................................................*)
PROCEDURE dWrite5( Aus : File;
Format : ARRAY OF CHAR;
Par1 : ARRAY OF BYTE;
Par2 : ARRAY OF BYTE;
Par3 : ARRAY OF BYTE;
Par4 : ARRAY OF BYTE;
Par5 : ARRAY OF BYTE);
(*........................................................................*)
PROCEDURE dWrite6( Aus : File;
Format : ARRAY OF CHAR;
Par1 : ARRAY OF BYTE;
Par2 : ARRAY OF BYTE;
Par3 : ARRAY OF BYTE;
Par4 : ARRAY OF BYTE;
Par5 : ARRAY OF BYTE;
Par6 : ARRAY OF BYTE);
(*........................................................................*)
PROCEDURE dWrite7( Aus : File;
Format : ARRAY OF CHAR;
Par1 : ARRAY OF BYTE;
Par2 : ARRAY OF BYTE;
Par3 : ARRAY OF BYTE;
Par4 : ARRAY OF BYTE;
Par5 : ARRAY OF BYTE;
Par6 : ARRAY OF BYTE;
Par7 : ARRAY OF BYTE);
END FFormAus.