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 ...
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.
Ja, kannst Du.
P.S. Wenn die Datei (CRTSRCPF) mit ACCPTH(*KEYED) erstellt wurde, kannst Du auch CHAINen ...
Ok danke. :)
Gruß Martin
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
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!
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...
Argh stimmt warum geb ich da die Datei an....
Danke an euch beide!
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
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