PDA

View Full Version : verschiedene Satzformate in Datei?



cicero22
22-09-03, 16:18
Hallo *ALL!

Ein weiteres Mal in voller Hoffnung folgende Frage:

Wie möchten gerne eine Schnittstellen Datei (Output) erzeugen, die ca. 5-10 verschiedene Satzaufbauten enthält. Header, 4-7 verschiedene Datenformate und einen Trailer-Satz. Alle Datensätze haben natürlich wie es sich gehört verschiedene Satzaufbauten.
Die EndDatei ist dann eine ASCII Datei, welche ich z.B. mit CPYTOPCD auf das QDLS ausgegeben wird.

Was schweben Euch für Möglichkeiten im Kopf herum?

D*A*N*K*E

dirk

Sven Schneider
22-09-03, 17:38
Das hört sich ganz nach einer Schnittstelle einer Sendedatei für einen Spediteur an (z.B. transoflex).

Also ich habe das fogendermaßen gelöst.

- Datei mit einem Feld Länge 128 String.
- In RPG z.B. für jedes Satzformat eine Datenstruktur
- Datenstruktur mit Datenbankfeldern aus der Anwendung füllen
- MOVE Datenstruktur in das 128 stellige Feld (im Bsp. TOFSET)



I*---------- DFU-SÄTZE -----------------------------------*
IKOPF IDS
I 1 20$SART
I 3 110$KDNNR
I 12 170$DATLF
I 18 190$NDLK
I 20 20 $EDIS
I 21 260$REFNR
I 21 26 $REFNA
ISATZ11 IDS
I 1 26 $KOPF1
I 27 27 $KZNAM
I 28 117 $ENAM
I 28 57 $ENAM1
I 58 87 $ENAM2
I 88 117 $ENAM3
I 118 128 $RES1
ISATZ12 IDS
I 1 26 $KOPF2
I 27 56 $EATN
I 57 86 $ESTR
I 87 90 $RES2
I 91 91 $RES3
I 92 94 $ELND
I 95 99 $EPLZ
I 100 124 $EORT
I 125 127 $RES4
I 128 128 $RES5

... Routine pro Lieferschein-Satz aufrufen

C*-----------------------------------------
C* Bearbeiten Datenpool
C*-----------------------------------------
C $SATZ BEGSR
C*-----------------------------------------
C CLEARKOPF
C CLEARSATZ11
C CLEARSATZ12

.... hier Felder versorgen

C*
C MOVE '11' $SART
C MOVE KOPF $KOPF1
C ADD 1 $SATZZ
C MOVE SATZ11 TOFSET
C WRITETOFDUS0
C*
C MOVE '12' $SART
C MOVE KOPF $KOPF2
C ADD 1 $SATZZ
C MOVE SATZ12 TOFSET
C WRITETOFDUS0
C*
C ENDSR


Sven

Fuerchau
22-09-03, 18:30
Die Satzformate können auch als PF-Datei per DDS erstellt werden und dann als externe Struktur im RPG übernommen werden.
Vorteil: Nicht so viel Tipparbeit, Fehler/Änderungen in der Feldlänge können durch Änderung der PF und Umwandlung des PGM's erreicht werden.
Mir ist alleine die Rechnerei schon zu viel und fehlerbehaftet, ausserdem lassen sich die Strukturen auch mehrfach wieder verwenden.
Die Reserve zum Auffüllen braucht auch nicht definiert zu werden wenn man die Struktur mit MOVEL(P) überträgt.

cicero22
23-09-03, 06:48
Hallo Fuerchau!

Du meinst externe Datenstruktur aus Datei heraus, oder?

D.h. für jede Satzart eine eigene physische Datei erstellen und diese im Programm als externe Datenstruktur definieren?

danke
dirk

B.Hauser
23-09-03, 07:39
Hallo,

solange man sich unter RPGIII befunden hat war die Lösung eine physische Datei pro Satz-Format zu definieren die beste Möglichkeit.
Die Dateien werden als externe Datenstrukturen in das Programm eingebunden. Je nach Satz-Art wird der Satz in die entsprechende Datenstruktur gefüllt.

Unter RPGIV würde ich dies beibehalten. Aus dem einfachen Grund, dass die externen Datenstrukturen nur einmalig vorhanden sind. Bei Änderungen muss nur die Datei geändert und die Module/Programme neu erstellt werden.

Nur so als Anmerkung:
In RPGIV braucht man bei internen Datenstrukturen nicht mehr die Von-/Bis-Werte anzugeben. Die Länge der einzelnen Felder genügt. (Die ganze Rechnerei entfällt somit!)

Des weiteren sollte man sich in RPGIV soweit möglich von allen MOVE-Befehlen trennen.
MOVE wird im RPGIV-Free Format nicht unterstützt.
EVAL hat die gleiche Funktionalität wie MOVEL(P).

Birgitta

Sven Schneider
23-09-03, 23:07
Zum Thema externe Datenstrukturen :
Man kann auch mit einem Elefanten eine Mücke erschlagen.
Wenn, wie im gegebenen Bsp, die Satzstrukturen nur in einem Schnittstellen-Programm verwendet werden sollen, erscheint mir der Aufwand zur Anlage von ext. DS einfach zuviel.

Zum Thema MOVE und Längenangaben in DS :
Dem muß ich mich anschließen, das lässt sich in RPGIV eleganter lösen.

Sollte halt nur schnell gehen und als Anregung dienen.
Das Programm ist ja auch mehr als 5 Jahre alt.

Sven