PDA

View Full Version : Objektnamen dynamisch dem SAVOBJ im CL zuordnen



Seiten : [1] 2

becama
09-08-05, 15:10
Hallo *all,

im CL ermittle ich die Namen mehrerer Files, die ich in eine SAVF sichern möchte. Ich schreibe also die unterschiedlichsten Namen in eine DTAARA und übertrage dann deren Inhalt in einen Parameter &objlst. Diesen nehme ich dann beim SAVOBJ. Bsp. SAVOBJ OBJ(&OBJLST) .......
Beim Debug aufs CL sieht das wunderbar aus: SAVOBJ OBJ(FILE1 HUGO EMMA)..... genauso als wenn man es via commandozeile eingegeben hätte.Tatsache ist aber, daß das CL stoppt: CPD0079 Wert 'FILE1 ' für OBJ kein Name oder generischer Name.
Ursache . . . . : Wert 'FILE1 ' enthält Zeichen, die in einem Namen oder in einem generischen Namen nicht gültig sind. Ein Name muß mit einem Buchstaben beginnen, gefolgt von alphanumerischen Zeichen; ist der Name eine Zeichenfolge, muß diese in Anführungszeichen stehen. Ein gültiger
generischer Name ist ein Name oder ein Teilname, der mit einem Stern endet. Der Stern muß vor dem Fragezeichen am Ende stehen, falls der generische Name in Anführungszeichen steht.

Mit diesem Text kann ich nichts Anfangen, da ich weder ein Hochkomma im CL erzeuge noch mit generischen Namen arbeite und dann noch den Stern * vergessen hätte.
Was heißt: Ist der Name eine Zeichenfolge ?
Wie kann ich im CL Objektnamen dynamisch (erst zur Laufzeit) dem SAVOBJ zuordnen?

Vielen Dank für eure Hinweise

kuempi von stein
09-08-05, 15:33
Hallo *all,

im CL ermittle ich die Namen mehrerer Files, die ich in eine SAVF sichern möchte. Ich schreibe also die unterschiedlichsten Namen in eine DTAARA und übertrage dann deren Inhalt in einen Parameter &objlst. Diesen nehme ich dann beim SAVOBJ. Bsp. SAVOBJ OBJ(&OBJLST) .......
Beim Debug aufs CL sieht das wunderbar aus: SAVOBJ OBJ(FILE1 HUGO EMMA)..... genauso als wenn man es via commandozeile eingegeben hätte.Tatsache ist aber, daß das CL stoppt: CPD0079 Wert 'FILE1 ' für OBJ kein Name oder generischer Name.
Ursache . . . . : Wert 'FILE1 ' enthält Zeichen, die in einem Namen oder in einem generischen Namen nicht gültig sind. Ein Name muß mit einem Buchstaben beginnen, gefolgt von alphanumerischen Zeichen; ist der Name eine Zeichenfolge, muß diese in Anführungszeichen stehen. Ein gültiger
generischer Name ist ein Name oder ein Teilname, der mit einem Stern endet. Der Stern muß vor dem Fragezeichen am Ende stehen, falls der generische Name in Anführungszeichen steht.

Mit diesem Text kann ich nichts Anfangen, da ich weder ein Hochkomma im CL erzeuge noch mit generischen Namen arbeite und dann noch den Stern * vergessen hätte.
Was heißt: Ist der Name eine Zeichenfolge ?
Wie kann ich im CL Objektnamen dynamisch (erst zur Laufzeit) dem SAVOBJ zuordnen?

Vielen Dank für eure Hinweise
hello,

auch wenns schwerfällt.....
füge doch mal die originale fehlermeldung hier ein....
ich bin mir ziemlich sicher - wenn die as/400 meint da ist ein ungültiges zeichen in der kette, dann ist da auch ein ungültiges zeichen.....

k.

B.Hauser
09-08-05, 15:59
Hallo,

Du must den kompletten CL-Command als String aufbereiten und dann mit QCMDEXC ausführen.

Birgitta

becama
09-08-05, 16:19
Hallo,

Du must den kompletten CL-Command als String aufbereiten und dann mit QCMDEXC ausführen.

Birgitta


Hallo Brigitte,

QCMDEXEC kann ich doch nur über RPG aufbereiten oder klappt das auch in CL ?
Hast du vielleicht ein Beispiel ?

Wäre Super !
DANKE

B.Hauser
09-08-05, 17:23
QCMDEXEC kann ich doch nur über RPG aufbereiten oder klappt das auch in CL ?


Warum sollte das nicht aus CL klappen?
QCMDEXC ist nichts anderes als ein Programm das CL-Befehle ausführt.

Hier ein Beispiel:


PGM
DCL VAR(&CLCMD) TYPE(*CHAR) LEN(256)
DCL VAR(&CLCMDLEN) TYPE(*DEC) LEN(15 5) VALUE(256)

DCL VAR(&LIBL) TYPE(*CHAR) LEN(50) +
VALUE('QTEMP HAUSER HSEXAMPLES HSTEST')

CHGVAR VAR(&CLCMD) +
VALUE('CHGLIBL LIBL(' *CAT &LIBL *TCAT ')')

CALL PGM(QCMDEXC) PARM(&CLCMD &CLCMDLEN)

ENDE: ENDPGM


Birgitta

becama
10-08-05, 07:33
Hallo Brigitte,

vielen Dank für das Beispiel.
Eigentlich wollte ich die Namen der Files nicht hart codieren,
aber wahrscheinlich komme ich nicht drum 'rum.

Übrigens: Großes Lob an *all in diesem Forum. Einfach Klasse

Viele Grüße und weiter so

B.Hauser
10-08-05, 08:03
Eigentlich wollte ich die Namen der Files nicht hart codieren,
aber wahrscheinlich komme ich nicht drum 'rum.


Warum solltest Du das?
Du liest Deine Dataarea ein, mit den verschiedensten Dateien, bildest den String (bzw. verknüpfst die einzelnen Informationen über *CAT, *TCAT oder *BCAT, je nachem wie Du es brauchst).

Im überigen heiße ich nicht Brigitte.

Birgitta

becama
10-08-05, 10:02
Hallo Brigitta,

sorry für meinen faux pas mit deinem Namen.

Du hast natürlich recht. Ich muß nichts hart codieren, denn ich kann die Variable, die die Dateinamen enthält in dem aufzubereitenden String verwenden.

Ich hab es soeben erfolgreich getestet.

Vielen Dank nochmal für den entscheidenden Tip mit QCMDEXC.

becama
10-08-05, 10:06
Hallo Birgitta,

schon wieder den falschen Namen erwischt.
Aber ich bin ja lernfähig und hab nun endlich geschnallt,
daß du weder Brigitte noch Brigitta sonden Birgitta heißt.

Das war wirklich keine Absicht.

Grüße

JonnyRico
10-08-05, 10:06
Hallo Brigitta,


Schon wieder...nur dies mal nen bissel anders :D