Anmelden

View Full Version : DDS in ILE RPG



Seiten : 1 [2] 3 4 5 6 7 8 9

RobertMack
08-09-06, 12:54
Ja, kannst Du.

P.S. Wenn die Datei (CRTSRCPF) mit ACCPTH(*KEYED) erstellt wurde, kannst Du auch CHAINen ...

Fuerchau
08-09-06, 12:55
Da SRC-PF's sequentielle Dateien sind, kannst du mittels Write jederzeit Daten anhängen. SRCSEQ ist dabei unerheblich, da der SEU nicht sortiert sondern nur numeriert.
SRCDTA ist im Format JJMMTT zu füllen.

Und das man Daten vor der Ausgabe aufbereitet ist korrekt.

Squall
08-09-06, 12:56
Ja, kannst Du.

P.S. Wenn die Datei (CRTSRCPF) mit ACCPTH(*KEYED) erstellt wurde, kannst Du auch CHAINen ...

Ok danke. :)

Gruß Martin

DVE
08-09-06, 12:58
Bei den von mir geschrieben Programmen, habe ich mich nie um SRCSEQ gekümmert, sondern habe immer nur in die Datei geschrieben. Da ich aber dies nur mit "normalem" RPG und nicht mit ILERPG gemacht habe, sollte hier die Frage nach dem Formatnamen beantwortet werden. Denn im RPG muss in der Dateibeschreibung ein RENAME durchgeführt werden, weil Dateiname = Formatname ist.

FQPNLSRC O E DISK
F QPNLSRC KRENAMESRCOUT

Gruß
DVE

Squall
11-09-06, 16:18
Hallo ich bins wieder,

ich hätte noch eine Frage bzgl. cl und rpg.

Zz sieht mein CL Prgramm so aus:


PGM

CPYSRCF FROMFILE(DOMMZO/TESTDDS) +
TOFILE(DOMMZO/TESTDDS2) FROMMBR(TESTDDS)
OVRDBF FILE(DDSTEST2) TOFILE(DOMMZO/DDSTEST2) +
MBR(DDSTEST2) OVRSCOPE(*JOB)
CALL PGM(DDSWRITE)
/** DLTOVR FILE(TESTDDS2) LVL(*JOB) **/
ENDE: RETURN

ENDPGM


Erst von einem Muster eine Kopie machen. Diese zu überschrieben bereit machen und dann das RPG Programm aufrufen.
DLTOVR brauche ich doch eigentlich nicht da es Änderungen am jeweiligen File ja rückgängig macht.

Und mein RPG Programm sieht so aus.



H DftActGrp(*NO) ActGrp(*CALLER)
H alwnull(*USRCTL)

FTESTDDS2 uf A e k disk

DSRCSEQ S 6 2
DSRCDAT S 6 0
DSRCDTA S 80A

C eval srcseq = 0001
C eval srcdat = 060911
C eval srcdta = 'dies ist ein test'
C write testdds2
C return


Ich wollte einfach nur testen ob ich einen Satz schreiben kann. Dabei bekomme ich diese Meldungen.




*RNF7066 00 4 000400 Satzformat TEST für Eingabe oder Ausgabe nicht verwendet.
*RNF5063 30 18 001300 Operand in Faktor 2 darf für diese Operation keine extern
beschriebene Datei sein.


Wo liegt der Fehler? Habe ich mich mit den Dateien / Membern vertan? Muss ich das File(/Member) anders definieren?


PS: Klappt das mit dem Write so einfach oder muss ich die 3 SRCXXX noch irgendwie setzen?

Danke!

Fuerchau
11-09-06, 16:32
Also:
CPYSRCPF kann ersetzt werden durch ADDPFM !

Der OVRDBF leitet die Ausgabe deiner Datei um, der DLTOVR entfernt nur die Umleitung.
Es ist sicherer, die Umleitung wieder zu entfernen, wenn sie nicht mehr benötigt wird, da sie sonst während der Laufzeit des Jobs (*DFTACTGRP) aktiv bleibt.

Beim WRITE gib das Satzformat und nicht den Dateinamen an.
Mit dem EVAL weist du den SRC-Feldern doch Werte zu.

RobertMack
11-09-06, 16:34
Hi,

laß die D-Zeilen weg und ändere die F-Zeile:

"O " statt "UF" (Alternative: dummy read hinter retrn)
+ (TESTDDS2:TESTOUT) zum Umbenennen des Satzformats

...auf die schnelle, ohne Garantie ;-)



oooh, Kollege Fuerchau war schneller...

Squall
11-09-06, 17:00
Argh stimmt warum geb ich da die Datei an....

Danke an euch beide!

B.Hauser
11-09-06, 17:05
Hallo,

es gibt mehrere Möglichkeiten. Man kann z.B. die Source-Datei auch intern beschreiben. Etwa so:



FTestDDS2 O F 92 DISK
*-----------------------------------------------------
D DSSRC DS
D SrcSeq 6S 2
D SrcDat 6S 0
D SrcDta 80A
*-----------------------------------------------------
/Free
SrcSeq = 1;
SrcDat = 060911;
SrcDta = 'Dies ist ein Test';
Write TestDDS2 DSSRC;
/End-Free


Birgitta

Squall
12-09-06, 09:26
Hallo,

kann ich die Datei auch variabel definieren? Zb.: Ich übergebe dem CL Programm eine char-Variable die einen (zukünftigen) Dateinamen enthält. Diese Datei wird dann vom CL Programm erzeugt. Das CL Programm ruft dann das RPG Programm auf welches mithilfe des Strings die Datei definiert und dann darauf zugreift.

Gruß

Martin