Parent: [cc34dc] (diff)

Download this file

FormAusLib.def    142 lines (120 with data), 8.8 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
DEFINITION MODULE FormAusLib;
(*------------------------------------------------------------------------*)
(* [DE] Routinen die gemeinsam von {T|F|S}FormAus genutzt werden. *)
(* *)
(* Der Parameter "Laenge" gibt jeweils die Anzahl uebergebener Bytes an *)
(* wenn nicht explizit etwas anderes in der Prozedurebeschreibung ange- *)
(* geben ist. *)
(* *)
(* [EN] Routines used by {T|F|S}FormAus. NOT for direct use !!! *)
(* *)
(* The parameter "Laenge" defines the number of bytes handed over in all *)
(* procedures if not explicitly describes having another meaning *)
(*------------------------------------------------------------------------*)
(* Implementation : Michael Riedl *)
(* Licence : GNU Lesser General Public License (LGPL) *)
(*------------------------------------------------------------------------*)
(* $Id: FormAusLib.def,v 1.5 2018/06/09 08:22:43 mriedl Exp mriedl $ *)
FROM SYSTEM IMPORT BYTE;
FROM Deklera IMPORT STRING;
TYPE StrPrt = POINTER TO STRING;
PROCEDURE WrByteStr(Str : ARRAY OF BYTE; (* F"ur Mocka *)
Laenge : CARDINAL);
(*-----------------------------------------------------------------*)
(* Schreibt eine als BYTE-Feld uebergebene Zeichenkette auf den *)
(* Standardausgebekanal *)
(* *)
(* Write a string handed over as an BYTE-array to standart output *)
(*-----------------------------------------------------------------*)
PROCEDURE WrByteStrN(Str : ARRAY OF BYTE; (* F"ur Mocka *)
Laenge : CARDINAL);
(*-----------------------------------------------------------------*)
(* Schreibt eine als BYTE-Feld uebergebene Zeichenkette auf den *)
(* Standardausgebekanal. Dabei wird "Laenge" als fixe Breite der *)
(* der ausgegebenen Zeichenkette (rechtsbuendig) genutzt (siehe *)
(* TIO.WrStrForm) *)
(* *)
(* Write a string handed over as an BYTE-array to standart output *)
(* with a fixed length given in "Laenge" and right orientation. *)
(* See TIO.WrStrForm for more details (Laenge is handed over as *)
(* negative integer to WrStrForm). *)
(*-----------------------------------------------------------------*)
PROCEDURE ByteToStr(Str : ARRAY OF BYTE;
Laenge : CARDINAL) : StrPrt;
(*-----------------------------------------------------------------*)
(* Konvertiert eine als BYTE-Feld uebergebene Zeichenkette in *)
(* einen Zeiger auf ein Zeichenkettenfeld (ARRAY OF CHAR) *)
(* *)
(* Converts a string handed over as an BYTE-array to a pointer to *)
(* an array of characters *)
(*-----------------------------------------------------------------*)
PROCEDURE ByteToInt(i : ARRAY OF BYTE;
Laenge : CARDINAL) : INTEGER;
(*-----------------------------------------------------------------*)
(* Konvertiert eine als BYTE-Feld uebergebene vorzeichenbehatete *)
(* Ganzzahl in eine INTEGER. *)
(* *)
(* Converts a integer value handed over as an arry of byte to a *)
(* "propper" integer. *)
(*-----------------------------------------------------------------*)
PROCEDURE ByteToCard(i : ARRAY OF BYTE;
Laenge : CARDINAL) : CARDINAL;
(*-----------------------------------------------------------------*)
(* Konvertiert eine als BYTE-Feld uebergebene nicht vorzeichen- *)
(* behafete Ganzzahl in eine CARDINAL. *)
(* *)
(* Converts a cardinal value handed over as an arry of byte to a *)
(* "propper" cardinal. *)
(*-----------------------------------------------------------------*)
PROCEDURE ByteToLngCard(i : ARRAY OF BYTE;
Laenge : CARDINAL) : LONGCARD;
(*-----------------------------------------------------------------*)
(* Konvertiert eine als BYTE-Feld uebergebene nicht vorzeichen- *)
(* behafete Ganzzahl in eine LINGCARD. Wenn Laenge nicht zu einer *)
(* LONGCARD passt wird MAX(LONGCARD) zurueckgegeben. *)
(* *)
(* Converts a real value handed over as an arry of byte to a *)
(* "propper" long cardinal. If the parameter "Laenge" does not fit *)
(* to a LONGREAL MAX(LONGREAL) is returned. *)
(*-----------------------------------------------------------------*)
PROCEDURE ByteToLngReal(x : ARRAY OF BYTE;
Laenge : CARDINAL) : LONGREAL;
(*-----------------------------------------------------------------*)
(* Konvertiert eine als BYTE-Feld uebergebene Gleitkommazahl *)
(* in eine LONGREAL. Laenge gibt hier die Anzahl uebergebenen *)
(* BYTEs an und muss fuer den Typ REAL oder LONGREAL passen, *)
(* ansonsten wird IEEE.NAN zurueckgegeben. *)
(* *)
(* Converts a real value handed over as an array of byte to a *)
(* "propper" longreal. The procedure uses the parameter "Laenge" *)
(* to decide if the value x is a REAL or a LONGREAL. *)
(* If x cannot be represented as a IEEE.NAN is returned. *)
(*-----------------------------------------------------------------*)
PROCEDURE PreParseFormat( FmtAlt : ARRAY OF CHAR;
VAR FmtNeu : ARRAY OF CHAR;
VAR done : BOOLEAN);
(*---------------------------------------------------------------*)
(* Ersetzt im ersten Schritt alle vorkommenden "nX" Anweisungen *)
(* durch das intern genutze Format Xn. *)
(* *)
(* Ersetzt im im zweiten Schritt alle vorkommenden "n(fmt)" *)
(* Anweisungen durch fmt,(n-1)*[fmt]. *)
(* *)
(* Beispiel : "36X,2(1X,I2)" wird zu "X36,X1,I2,X1,I2" *)
(* *)
(* Es sind maximal vier Klammern erlaubt und der Wiederholungs- *)
(* faktor kann nur im Intervall 1..9 liegen, was aber in Anbe- *)
(* tracht der Limitation der Anzahl der ausschreibbaren Parmeter *)
(* voellig ausreichend sein sollte. *)
(* *)
(* Replaces occurences of "nX" format instructions by "Xn" and *)
(* then handles bracketed format expressions "n(fmt)" to replace *)
(* them by n time fmt *)
(* *)
(* Sample : "36X,2(1X,I2)" becomes "X36,X1,I2,X1,I2" *)
(* *)
(* The number of brackets is limited to 4 at the moment which *)
(* sould be ok taking the limitation of maximal allowed *)
(* parameter (9) into consideration. *)
(*---------------------------------------------------------------*)
END FormAusLib.