CCS Modul   E_ARRAY_IO
 
   $Id: e_array_io.C,v 1.36 2005/09/06 15:14:28 gew3rt Exp $
   ---------------------------------------------------------------------
   Kurzbeschreibung: 	import / export von Feldern
   ---------------------------------------------------------------------
   Projekt:		CCS
   Sourcefile:		e_array_io.C
   Autor:		RtW/TEF72-Juilfs (12.12.95)
   Zielsystem:		HP9000/V743 (HP-RT 2.0x), /Sxxx (HP-UX 9.0x)
   Sprache:		C++
   ---------------------------------------------------------------------
   Prototyp:
   void e_array_io(
	   ,shm_stringpointer   *zeilen_wert
	   ,long index1
	   ,long anzahl)
   
   ---------------------------------------------------------------------
   Aufruf: im Vectorinterpreter
   
	 (*funktionen[modulnummer])
	    (Ssp_expand_zeile
	     ,Ssp_expand_wert
	     ,p_verwaltung->begin_modulblock
	     ,p_verwaltung->anzahl_modulparameter);

   ---------------------------------------------------------------------
   Funktionsbeschreibung:
   Ueber dieses Modul koennen Felder vom Typ INT bzw. DOUBLE importiert 
   (MODUS = R oder RI) oder exportiert (MODUS = W) werden.
   Zusaetzlich ist es moeglich auch einzelne Variablenwerte zu importieren bzw. zu 
   exportieren. Hier ist dann auch der Typ STRING zulaessig.
   - Mit dem Modus R gelesene Dateien müssen immer den fixen Namen "messdat_read"
   enthalten. Es handelt sich meistens um externe Dateien.
   - Der Modus RI (internal read) dient dazu, die in CCS über den messdat-Service
     (z.B. mit dem Modul M_LABVIEW)  geschriebenen Dateien wieder lesen zu können.
   
   Zu beachten ist, dass die Parametrisierung ab dem Header_1 bzw, dem ARRAY_1 
   beginnt und zusammenhaengend ist, d.h. zwischen den einzelnen Parameterzeilen darf
   keine Luecke sein, da diese Luecke einer Endekennzeichnung entspricht!
   
   Beim Export werden zuerst mehrere Headerzeilen erzeugt z.B.
		1: date:   01.12.2002
		2: time:   16:25:43
		3: name:   ccs
		4: file:   b_muster01acse01_section_01_acc0001_0_07062002_status_byte.csv
		5: SCU
		6: STATUS_V0N;RESPONSE_V0N;STATUS_V0P;RESPONSE_V0P;STATUS_H0
   Die Zeilen haben folgende Bedeutung
		1: aktuelles Datum		
		2: aktuelle  Zeit
		3: Benutzer wird vom Programm immer mit ccs belegt
		4: Dateinamen, dieser wird zusammengesetzt aus der in der 
		   Konfigurationsdatei unter dem Service messdat 
		   gespeicherten Dateibeschreibung, dem im Parameter 
		   FILENAME angegebenen String (im Beispiel status_byte) 
		   und der Dateikennung ".csv". 
		   Die Dateibeschreibung in der Konfigurationsdatei für 
		   das obige Beispiel sieht wiefolgt aus:
			   messdat.typ:        nfs
			   messdat.interface:  rcp
			   messdat.host:       uxpdb1
			   messdat.directory:  /hw/messdat/%{TYP}/
			   messdat.filename:   %{TTNR}%{TYP}%{VARIANTE}_
					       %{ECUID}_%{KNOTEN}_%{SECTION}_
					       %{DAY}%{MONTH}%{YEAR}
                   Ist fuer messdat.interface rcp eingetragen wird die
                   Messdatendatei auf /LocalDisk/config/ gespeichert,
                   anschliessend wird die datei auf messdat.host (uxpdb1) 
                   kopiert und anschliessend gelöscht.
                   Bei allen anderen Werte für messdat.interface wird die 
                   Datei unter dem messdat.directory angelegt und nicht
                   auf messdat.host kopiert.
		5: String der in dem Parameter SUB_DIRECTORY uebergeben wurde.
                   d.h.: dieser Wert wird an den uebergebenen Service vom 
                   "messdar.diretory" angehaengt
		6: Ausgabe der Strings die in den Parametern HEADER_1 
		   bis HEADER_9 uebergeben wurden.
   Amschliessend werden die Daten mit ; getrennt gespeichert.

   Beim Import wird der Dateiname zusammengesetzt aus dem Verzeichnis 
   im Service messdat.directory, dem String "messdat_read_", dem im 
   Parameter FILENAME gepeicherten String und der Dateikennung ".csv".
   Die interne Struktur ist identisch wie unter Export beschrieben, wobei 
   die 6 Headerzeilen nicht ausgewertet werden.
   Sind mehr Daten in der Datei gespeichert als Feldelemente definiert 
   sind, wird eine Fehlermeldung erzeugt. Es können auch unterschiedlich 
   grosse Felder eingelesen werden. Das Einlesen eines Feldes kann mit einem 
   leeren String beendet werden.
   
   Beschreibung der Modulübergabeparameter:
1 PRUEFSCHRITT
   GAUDI Prüfschritt
   ------------------------------
2 POSITION
   PAV- Position
   ------------------------------
3 FILENAME
   Kuerzel das an den Dateinamen angefuegt wird
   ------------------------------
4 SUB_DIRECTORY
 (neu, alter Name war KOMMENTAR)
   Kommentarzeile die beim exporieren in den Header in Zeile 5 geschrieben wird.
   zusätzlich kann hier der Subdirectory-Name angegeben werden für Read/Write
   ------------------------------
5 MODUS
   R = lesen (importieren) von einer Datei in bis zu 9 Feldern
   RI= lesen einer intern von einem CCS-Modul geschriebenen Datei
   W = schreiben (exportieren) von bis zu 9 Feldern in eine Datei
   ------------------------------
6 FORMAT
   ASCII 
   ------------------------------
7 HEADER_1
   Headertext 1
   ------------------------------
8 ARRAY_1
   Arrayvariable 1 oder Variable 1
   ------------------------------
9 HEADER_2
   Headertext 2
   ------------------------------
10 ARRAY_2
   Arrayvariable 2 oder Variable 2
   ------------------------------
11 HEADER_3
   Headertext 3
   ------------------------------
12 ARRAY_3
   Arrayvariable 3 oder Variable 3
   ------------------------------
13 HEADER_4
   Headertext 4
   ------------------------------
14 ARRAY_4
   Arrayvariable 4 oder Variable 4
   ------------------------------
15 HEADER_5
   Headertext 5
   ------------------------------
16 ARRAY_5
   Arrayvariable 5 oder Variable 5
   ------------------------------
17 HEADER_6
   Headertext 6
   ------------------------------
18 ARRAY_6
   Arrayvariable 6 oder Variable 6
   ------------------------------
19 HEADER_7
   Headertext 7
   ------------------------------
20 ARRAY_7
   Arrayvariable 7 oder Variable 7
   ------------------------------
21 HEADER_8
   Headertext 8
   ------------------------------
22 ARRAY_8
   Arrayvariable 8 oder Variable 8
   ------------------------------
23 HEADER_9
   Headertext 9
   ------------------------------
24 ARRAY_9
   Arrayvariable 9 oder Variable 9
   ------------------------------
26 FEHLERFLAG
   
   ...