On Thu, Jun 26, 2003 at 12:35:30PM +0200, Rolf-Hubert Pobloth wrote:
für eine Satzbeschreibung muß ich die Satzlänge angeben. Bei char ist das Klar char Adresse[30]; sind 30 Bytes aber wieviele Bytes sind es für
short double long
Die absoluten Größen von Datentypen sind in C nicht festgelegt, sondern implementationsabhängig. C mißt die Größen von Datentypen in Vielfachen von sizeof(char), d.h. sizeof(char) ist immer 1. Ob diese 1 dann auch für ein Byte steht und ob das Byte signed oder unsigned ist, ist wieder implementationsabhängig. Insbesondere ist mir mindestens eine Plattform (Ein Signalprozessor) bekannt, bei dem sizeof(char) = 1 (32 Bit) ist. Weiter verlangt C, daß sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) und außerdem sizeof(char) <= sizeof(float) <= sizeof(double) ist. Bei o.a. Signalprozessor ist das immer 1. :-) Wenn Du eine Satzbeschreibung mit Satzlängenangaben hast, riecht das nach Datensätzen fester Länge im Cobol-Format. In diesem Fall hast Du keine Datentypen in der Eingabe, sondern Bytestrings in einem fragwürdigen Zeichensatz (Cobol-Format bedeutet gute Chancen, Daten in einem der zahllosen EBCDIC-Format zu kriegen). Du mußt diese Daten dann mit memcpy() aus dem Datensatz rauskopieren, zeichensatzkonvertieren und dann mit strtol() oder einem vergleichbaren Aufruf in was benutzbares Umwandeln. Kannst Du von den Jungs nicht was zeitgemäßes kriegen? XML zum Beispiel? Kristian