PDA

View Full Version : RTVOBJD PF-DTA / PF-SRC



Seiten : [1] 2

dibe
14-02-19, 09:17
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

Fuerchau
14-02-19, 09:26
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'

Fuerchau
15-02-19, 08:20
Gut, und wie mache ich das im CLP?

Radinator
18-02-19, 16:38
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>

Fuerchau
18-02-19, 17:51
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;-).

BenderD
18-02-19, 18:57
... gehen tut viel Unfug:
runsql ('create table as ...') und dann rcvf

aber wieso überhaupt CL? Das ist doch mittlerweile komplett überflüssig!

D*B

jajonowak
19-02-19, 05:18
Hallo Dibe,

die gewünschte Info bekommst Du mit dem Befehl RTVMBRD.

LG
Hans-Joachim

zu spät gesehen, Fuerchau hatte es bereits geschrieben.

Pikachu
19-02-19, 10:21
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

Fuerchau
19-02-19, 18:15
Meinst du das nun ernst;-)?