PDA

View Full Version : CL Prog.: Variable (Datum) wird beim CRTDIR nicht übergeben



QSECOFR-1
12-11-08, 16:20
Hallo zusammen,

ich habe mir ein kleines CL Programm erstellt, mit dem ich im IFS, Verzeichnisse mit dem aktuellen Datum erstellen will.
Leider klappt das nicht so ganz. Erst mal das Programm:

DCL VAR(&YEAR) TYPE(*CHAR) LEN(2)
DCL VAR(&MONTH) TYPE(*CHAR) LEN(2)
DCL VAR(&DAY) TYPE(*CHAR) LEN(2)
DCL VAR(&DATE) TYPE(*CHAR) LEN(8)

RTVSYSVAL SYSVAL(QMONTH) RTNVAR(&MONTH)
RTVSYSVAL SYSVAL(QDAY) RTNVAR(&DAY)
RTVSYSVAL SYSVAL(QYEAR) RTNVAR(&YEAR)

CHGVAR VAR(&DATE) VALUE('20' *TCAT &YEAR *TCAT +
&MONTH *TCAT &DAY)

QSYS/CRTDIR +
DIR('/.../.../.../&DATE')

Was jetzt passiert ist folgendes: Das Programm erstellt ein Verzeichnis mit dem Namen: "&DATE".
Warum wird die Variable nicht übergeben?

Ich habe ein ähnliches Programm, bei dem ich auf der gleichen Art und Weise SAVF (CRTSAVF) erstelle, und da klappt es ohne Probleme.

Habt ihr noch einen Tipp für mich?

Besten Dank im Voraus!

malzusrex
12-11-08, 16:30
versuche es mal so


DCL VAR(&YEAR) TYPE(*CHAR) LEN(2)
DCL VAR(&MONTH) TYPE(*CHAR) LEN(2)
DCL VAR(&DAY) TYPE(*CHAR) LEN(2)
DCL VAR(&DATE) TYPE(*CHAR) LEN(8)
DCL VAR(&DIR) TYPE(*CHAR) LEN(250)

RTVSYSVAL SYSVAL(QMONTH) RTNVAR(&MONTH)
RTVSYSVAL SYSVAL(QDAY) RTNVAR(&DAY)
RTVSYSVAL SYSVAL(QYEAR) RTNVAR(&YEAR)

CHGVAR VAR(&DATE) VALUE('20' *TCAT &YEAR *TCAT +
&MONTH *TCAT &DAY)

CHGVAR &DIR ('/.../.../.../' *TCAT &DATE)
QSYS/CRTDIR +
DIR(&DIR)



Das Problem ist, dein &DATE steht zwischen den beiden Anführungszeichen. Somit interpretiert er das als Text und nicht als Variable
Gruß Ronald

QSECOFR-1
12-11-08, 17:04
Hi Roland,

danke für deine Hilfe.
Aber irgendwie scheint das auch nicht viel zu helfen, bekomme jetzt eine CPFA089, Pattern not allowed in path name.
Was ich nur nicht verstehe ist, dass das PDM mir einige zusätzliche Hochkommata verpasst, ist das normal?

CHGVAR VAR(&DIR) +
VALUE('''/QIBM/UserData/.../.../.../'' *TCAT + &DATE')


EDIT:
Also beim debuggen meines ursprünglichen Programms sehe ich sogar bis zu der Stelle wo das Datum zusammengesetzt wird, dass alles seine Richtigkeit hat.
Selbst beim CRTDIR kann ich die Variable sehen (Display Program Variables), die dort eigentlich stehen müsste. Ich verstehe das nicht...

EDIT2:
Also bei deinem Vorschlag (Roland) wird folgendes als Variable erstellt:
'/QIBM/UserData/.../.../.../' *TCAT &DATE

QSECOFR-1
12-11-08, 17:39
@Ronald (Sorry, habe vorhin deinen Namen falsch gelesen :) )

So jetzt geht's. Ich habe 2 Tippfehler gehabt:
1. Beim "+" hatte ich ein Leerzeichen vergessen
2. Und im Pfad selbt war ein Leerzeichen zuviel

Also, vergiß was ich gesagt habe. Dein Vorschlag geht doch :o

malzusrex
12-11-08, 18:22
@Ronald (Sorry, habe vorhin deinen Namen falsch gelesen :) )


Null Proplemo (würde ein haariges Wesen sagen)

Damit lebe ich schon seit 37 Jahren, aber die Buchstaben bleiben ja immer die gleichen. Nur halt in einer anderen Reihenfolge.

Ronald