View Full Version : RTVOBJD PF-DTA / PF-SRC
Hallo zusammen
wenn ich ein RTVOBJD auf ein *FILE Objekt mache, so steht im PF-SRC Fall und im PF-DTA Fall immer nur PF in OBJATR.
Gibt es ein möglichkeit das zu unterscheiden?
Danke
Dietlinde Beck
Die Object-API's geben da auch nicht so viel her, da es sich um ein File-Attribut handelt.
In diesem Fall ist es RTVMBRD FILETYPE.
RobertMack
15-02-19, 08:05
select FILE_TYPE from SYSTABLES where TABLE_SCHEMA = 'QGPL' and TABLE_NAME = 'QCLSRC'
Gut, und wie mache ich das im CLP?
Da man in CL kein direktes SQL (also mit SELECT INTO <cl-variable> machen kann, sondern sich das (meines Wissens nach) nur über DCLF, RCVF und OVRDBF lösen lässt, wirst Du wohl oder übel auf das zurück greifen müssen oder Du schreibst dir ein Service Programm, welches du CALL-st und dir über Rückgabeparameter den Datei-Typus holst.
Hier ein Link zu einem Blogeintrag auf RPGPGM.COM: Read, write, and update a file in CL (https://www.rpgpgm.com/2017/05/read-write-and-update-file-in-cl.html)
Ich bin z.B. mit dem Set Lower Limit Code gut gefahren, habe allerdings "nur" einen SETLL auf eine logische Datei mit 1 von 2 Keys. Da der Nutzername eindeutig war, hat es bei mir geklappt. Wenn man allerdings mehr als 1 Schlüssel braucht, muss man das in CL(P) mit einer CL Datenstruktur (https://www.rpgpgm.com/2015/07/data-structures-in-cl.html) machen.
Hoffe ich konnte helfen!
Lg Radinator
Edit: Da sich das Beispiel von Robert Mack auf SQL mit einer View aus QSYS2 bezieht, weiß ich nicht, ob das mit CL und dem RCVF geht. Ich denke mal es wäre ökonomischer, wenn Du das einfach mit einem SRVPGM machst.</cl-variable>
Vielen Dank für die Antwort.
Allerdings war meine Frage eher scherzhaft gemeint.
Dass man Select-SQL mit HLL (RPG/COBOL/REXX) machen muss, war mir schon klar;-).
... gehen tut viel Unfug:
runsql ('create table as ...') und dann rcvf
aber wieso überhaupt CL? Das ist doch mittlerweile komplett überflüssig!
D*B
Hallo Dibe,
die gewünschte Info bekommst Du mit dem Befehl RTVMBRD.
LG
Hans-Joachim
zu spät gesehen, Fuerchau hatte es bereits geschrieben.
Gut, und wie mache ich das im CLP?
Vielleicht so...
PGM
DCLF FILE(FILETYPE)
MONMSG MSGID(CPF0000)
OVRDBF FILE(FILETYPE) TOFILE(SYSTABLES) SHARE(*YES)
OPNQRYF FILE((SYSTABLES)) FORMAT(FILETYPE) +
QRYSLT('NAME=''QCLSRC'' *AND +
DBNAME=''QGPL''') OPNID(*FILE)
RCVF
SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&FILETYPE)
CLOF OPNID(SYSTABLES)
ENDPGM: ENDPGM
FILETYPE (DDS / PF)
REF(SYSTABLES)
R FILETYPE
NAME R
DBNAME R
FILETYPE R
Meinst du das nun ernst;-)?