-
 Zitat von Fuerchau
Da gibts wohl ein bisschen Begriffsverwirrung:
In einer Source-Datei legt man die Quellbestimmungen ab.
Bei einem CRTPF gibt man diese Sourcedatei wiederum als Quelle mit den Erstellangaben an.
Also:
Du musst deine A-Bestimmungen in eine PF-SRC schreiben um anschliessend mittels CRTPF-Kommando eine DDS-beschriebene Datei erstellen zu können.
Einen direkten Weg gibt es sonst nicht.
Die Alternative ist dann eher SQL, da beim CREATE TABLE der Satzaufbau direkt mitgegeben wird, eine DDS-Quelle also nicht erforderlich ist.
Trotzdem kann eine TABLE-Datei wie eine DDS-beschriebene Datei verwendet werden.
Was deine Umwandlung angeht, so kannst du doch deine CLP-Quelle (QCLPSRC) z.B. als F-Bestimmung angeben.
Ein Löschen der PF-SRC ist nicht erforderlich oder sinnvoll, da du diese sonst vor jeder Umwandlung wieder neu erstellen musst.
Wieder vielen Dank für die freundlich Hilfe.
Nochmal konkret zusammengefasst:
1. Über mein CL Programm mithilfe von crtsrcpf eine Source Datei anlegen.
2. RPG Programm aufrufen und damit die Beschreibungen in die Datei zu schreiben.(F Bestimmung wie oben gesagt?)
3. Zurück im CL Programm das pf-src zu einer pf-dta umwandeln.
Stimmt das dann so? 
Gruß
Martin
-
Noch eine Frage.
Muss ich beim Übergeben von Parametern von CL zu RPG irgendetwas beachten?
Bekomme gerade diesen Fehler:
PHP-Code:
*RNF3776 10 a 001200 Externes Programm im Prototyp für Hauptprozedur ist nicht identisch mit dem Programm, das erstellt wird.
Das ist mein Call:
PHP-Code:
CALL PGM(DDSWRITE) PARM('DDS' 'DDS')
und das mein auffangen der Übergabe.
PHP-Code:
Daufnehm PR EXTPGM('DDSTEST') D field1 21A D field2 10A Daufnehm PI D MyFile 21A D MyMbr 10A
EDIT: Problem behoben.
Es gitb jedoch noch Fehler beim Open...
-
Hallo habe noch ein Problem und zwar lässt sich die neu erstellte Datei "DDS" nicht öffnen.
PHP-Code:
FDDS O F 92 Disk UsrOpn f ExtFile(MyFile) f ExtMbr(MyMbr) DCMDREC DS 92 DSRCSEQ 6S 2 DSRCDAT 6S 0 DSRCDTA 80A C* *entry plist C* parm MyFile 21 C* parm MyMbr 10 C eval MyFile = 'LIB/DDS' C eval MyMbr = 'DDS' C C eval srcseq = 0001.00 C eval srcdat = 0609121 C eval srcdta = 'dies ist ein test' C open(e) dds C* IF not %ERROR C write dds cmdrec C* endif C close dds C return
Hat jmd eine Idee warum bzw wie ich herausfinden kann warum? Die Fehlermeldung sagt nur das Write fehlschlägt weil die Datei geschlossen ist.
-
Schau mal ins Joblog, lass mal das "(e)" beim Open weg.
-
 Zitat von Fuerchau
Schau mal ins Joblog, lass mal das "(e)" beim Open weg.
Ich kann leider nicht in meinen Joblog schaun da ich nur PGMR bin und nicht über *JOBCTL verfüge.
Das (e) weglassen hat auch nichts gebracht. (das (e) ist doch nur für das Errorhandling zuständig oder?)
EDIT: Woran könnte es sonst noch liegen das ich das File nicht öffnen kann? DIe Datei DDS mit Teildatei DDS wird korrekt erstellt.
Hier nochmal mein CL:
PHP-Code:
PGM
/** CPYSRCF FROMFILE(LIB/TESTDDS) + **/
/** TOFILE(LIB/TESTDDS2) FROMMBR(TESTDDS) **/
/** ADDPFM FILE(LIB/TESTDDS2) MBR(TESTDDS3) **/
CRTSRCPF FILE(LIB/DDS) MBR(DDS)
OVRDBF FILE(DDS) TOFILE(LIB/DDS) +
MBR(DDS) OVRSCOPE(*JOB)
CALL PGM(DDSWRITE) PARM('DDS' 'DDS')
DLTOVR FILE(DDS) LVL(*JOB)
ENDE: RETURN
ENDPGM
und hier mein RPG Programm:
PHP-Code:
H DftActGrp(*NO) ActGrp(*CALLER)
H alwnull(*USRCTL)
FDDS O F 92 Disk UsrOpn
f ExtFile(MyFile)
f ExtMbr(MyMbr)
F*DDS uf A f K disk
D*aufnehm PR EXTPGM('DDSTEST')
D* field1 21A OPTIONS(*VARSIZE)
D* field2 10A OPTIONS(*VARSIZE)
D*aufnehm PI
D* MyFile 21A OPTIONS(*VARSIZE)
D* MyMbr 10A OPTIONS(*VARSIZE)
DCMDREC DS 92
DSRCSEQ 6S 2
DSRCDAT 6S 0
DSRCDTA 80A
C *entry plist
C parm MyFile 21
C parm MyMbr 10
C
C eval MyFile = 'LIB/DDS'
C eval MyMbr = 'DDS'
C
C eval srcseq = 0001.00
C eval srcdat = 0609121
C eval srcdta = 'dies ist ein test'
C open dds
C* IF not %ERROR
C write dds cmdrec
C* endif
C close dds
C return
-
 Zitat von Squall
Ich kann leider nicht in meinen Joblog schaun da ich nur PGMR bin und nicht über *JOBCTL verfüge.
Bin ja heute schon genug verwirrt.
Aber ich denke mal, das *JOBCTL mehr den Sinn hat ALLE Jobs kontrollieren zu dürfen.
Kommst Du wirklich nicht über die Systemanfrage 3 auf Deinen eigenen Job?
k.
-
 Zitat von kuempi von stein
Bin ja heute schon genug verwirrt.
Aber ich denke mal, das *JOBCTL mehr den Sinn hat ALLE Jobs kontrollieren zu dürfen.
Kommst Du wirklich nicht über die Systemanfrage 3 auf Deinen eigenen Job?
k.
Ich bekomme bei dspjoblog immer nur:
3>> DSPJOBLOG JOB(*)
Bei Main komme ich mit 3 und dann 1 zu den Jobs aber von da weiß ich nicht wie ich zu dem joblog für diesen Job kommen soll. Bin wie gesagt Neuling auf der i5.
-
 Zitat von Squall
3>> DSPJOBLOG JOB(*)
Jajajaja,
und dann die F10 und dann Rückwärtsblättern und dann lesen was da so steht.
Sach mal, sucht Ihr noch Leute?
:-)
k.
-
 Zitat von kuempi von stein
Jajajaja,
und dann die F10 und dann Rückwärtsblättern und dann lesen was da so steht.
Sach mal, sucht Ihr noch Leute?
:-)
k.
ah...Sry tut mir Leid... Vielen Dank für deine Hilfe.
Hab grad das Programm nochmal laufen lass und plötzlich gehts... hab diesmal in meiner DDS->DDS meinen Testsatz stehn...Fragt mich bitte nicht wie und warum habe gerade nur mit den jobs herumhantiert.
-
Hallo,
ich muss euch leider nochmal mit einer Frage belästigen. Es geht um den Aufruf meines CL Programms.
Ich ruf das Programm damit auf:
PHP-Code:
CALL PGM(DDSTEST) PARM('DOMMZO/TESTD' 'TESTD' 'TEST' 'TESTM' ' A ANFINR 2P 0 TEXT(''FIRMA'')' 0001.00 060914
Das Programm sieht so aus:
PHP-Code:
PGM PARM(&FILE &MBR &TEXTF &TEXTM &SRCDTA &SRCSEQ &SRCDAT) DCL VAR(&SRCDTA) TYPE(*CHAR) LEN(80) DCL VAR(&SRCSEQ) TYPE(*DEC) LEN(6 2) DCL VAR(&SRCDAT) TYPE(*DEC) LEN(6) DCL VAR(&FILE) TYPE(*CHAR) LEN(20) DCL VAR(&MBR) TYPE(*CHAR) LEN(10) DCL VAR(&TEXTF) TYPE(*CHAR) LEN(20) DCL VAR(&TEXTM) TYPE(*CHAR) LEN(20) CRTSRCPF FILE(&FILE) TEXT(&TEXTF) ADDPFM FILE(&FILE) MBR(&MBR) TEXT(&TEXTM) SRCTYPE(PF) OVRDBF FILE(&FILE) TOFILE(&FILE) + MBR(&MBR) OVRSCOPE(*JOB) CALL PGM(DDSWRITE) PARM(&FILE &MBR &SRCDTA &SRCSEQ &SRCDAT) DLTOVR FILE(&FILE) LVL(*JOB) ENDE: RETURN ENDPGM
Ich bekomme einen Error( (C D I R) CPF0001 von DDSTEST bei 1000 empfangen. ) beim CRTSRCPF.
PHP-Code:
Ursache . . . . : Das CL-Programm DDSTEST in Bibliothek DOMMZO hat einen Fehler bei Anweisung 1000 festgestellt. Der Nachrichtentext für CPF0001 ist: Fehler in Befehl CRTSRCPF gefunden..
Habe schon versucht meinen Aufruf zu verändern mit ' ohne etc. aber der Fehler bleibt. Wenn ich den CRTSCRPF so ausführe und die Werte per Hand eintrage funktioniert alles einwandfrei. Wo liegt denn mein Fehler? 
Danke für die Hilfe im Vorraus.
Gruß
Martin
-
same procedure as every time....
Die Fehlermeldung VOR CPF0001 ist die, die interessant ist.
Also im Jobprotokoll F10 drücken und zurückblättern.
So mal ganz ohne Wertung vermute ich btw. den Fehler im Parameter FILE!
Die Felder würde ich einzeln übergeben.
k.
Similar Threads
-
By homue in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 18-07-07, 16:47
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By Squall in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 10-10-06, 08:53
-
By Squall in forum IBM i Hauptforum
Antworten: 31
Letzter Beitrag: 28-09-06, 17:53
-
By Angela in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 22-08-06, 10:11
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks