PDA

View Full Version : QMQRY aus CL mit Variablen



Andreas Herzfeldt
13-04-12, 14:43
Hallo zusammen , ich stehe ein wenig auf dem Schlauch und komme nicht weiter.

Ich habe dieses QMQRY erstellt und daraus den Typ SQL erstellt :

SELECT_FPF

0001.00 INSERT INTO
0002.00 QTEMP/SYSTFTPF
0003.00 SELECT
0004.00 *
0005.00 FROM
0006.00 &LIBR/&TABLE
0007.00 WHERE FSERVE = &SERVERO
0008.00 AND FDOMAI = &DOMAINO

Insgesamt möchte ich das mit 4 Varaiblen ausführen.

Hier nun das CL :

PGM PARM(&OPT &SERVER &DOMAIN)


DCL VAR(&OPT) TYPE(*CHAR) LEN(1)
DCL VAR(&LIB) TYPE(*CHAR) LEN(10) +
VALUE('SYSAUS_V11')
DCL VAR(&FILE) TYPE(*CHAR) LEN(10) +
VALUE('SYSTFPF')
DCL VAR(&SERVER) TYPE(*CHAR) LEN(20)
DCL VAR(&DOMAIN) TYPE(*CHAR) LEN(20)
DCL VAR(&SERVERO) TYPE(*CHAR) LEN(23)
DCL VAR(&DOMAINO) TYPE(*CHAR) LEN(23)

CHGVAR VAR(&SERVERO) VALUE('''' *CAT &SERVER *TCAT '''')
CHGVAR VAR(&DOMAINO) VALUE('''' *CAT &DOMAIN *TCAT '''')
STRQMQRY QMQRY(SYSAUS_V11/SELECT_FPF) SETVAR((LIBR ' *CAT &LIB *CAT ') (TABLE ' *CAT &FILE *CAT ') (FSERVE &SERVERO) (FDOMAI &DOMAINO))

Obwoh ich die Variablen in den entsprechenden Hochkommata einbette, erfolgt die Abfrage nach Werten für die Variablen.

Was ist falsch, hier noch das Joblog :

CALL PGM(SYSTSCL_QM) PARM('1' 'SYSTEM' 'DOMAIN')
Einen Wert für Variable SERVERO eingeben und die Eingabetaste drücken.
'SYSTEM'
Einen Wert für Variable DOMAINO eingeben und die Eingabetaste drücken.
'DOMAIN'
Token * ungültig. Gültige Token: ( NEW FINAL TABLE UNNEST LATERAL
<IDENTIFIER>.
Befehl RUN für Objekt QUERY mit SQLCODE -104 fehlgeschlagen.
Befehl RUN QUERY aufgrund eines Fehlers beendet.
Befehl STRQMQRY fehlgeschlagen.

Im Dump sehen alle Feldinhalte richtig aus :

&DOMAIN *CHAR 20 'DOMAIN '
&DOMAINO *CHAR 23 ''DOMAIN' '
&OPT *CHAR 1 '1'
&SERVER *CHAR 20 'SYSTEM '
&SERVERO *CHAR 23 ''SYSTEM' '

Wir haben V7R1 am laufen.

MFG

Andreas

Robi
13-04-12, 15:47
Wenn deine variable &SERVERO heist, mußt du diese auch im Setvar weggeben.


STRQMQRY QMQRY(SYSAUS_V11/SELECT_FPF) SETVAR((LIBR ' *CAT &LIB *CAT ') (TABLE ' *CAT &FILE *CAT ') (FSERVE &SERVERO) (FDOMAI &DOMAINO))



nicht FSERV sondern SERVERO &SERVERO

Robi

Fuerchau
13-04-12, 15:49
Für LIBR und TABLE sieht mir das auch etwas seltsam aus, da hier die Inhalte nicht in Hochkommata sein dürfen.
Außerdem ist *CAT Bestandteil der Konstante.

Du bekommst da allerdings Probleme mit der SQL-Syntax, da bei LIB/TABLE keine Leerzeichen nach der Lib vorkommen dürfen.

Probier den QMQRY erst mal von der Kommandozeile aus.

Andreas Herzfeldt
13-04-12, 16:17
Hallo Robi, der Tip war Super ! Das "prompten" ist jetzt weg, das CL bricht jetzt mit SQL 104 und ungültiger Token * ab.

Werde ich am Montag prüfen.

Vielen Dank !

MFG

Andreas

Robi
13-04-12, 16:26
Na das ist das, was Baldur geschrieben hat ...

Andreas Herzfeldt
13-04-12, 16:29
Jetzt klappt es, die beiden " ' " jeweils für Bibliothek und Datei waren die Ursache.

Danke Euch beiden und schönes Wochenende,

Andreas