emmle
asked on
CL Program calling a QM Query
I am new to the AS/400 platform so I realise that my question may be trivial to some of you. Anyway, I am calling a very simple QM Query (Select statement) from a CL Program which requires 3 parameters even though only two get passed to the query (one of them being a date, defined as TYPE(*CHAR) LEN(26)).
What I do not understand is, each time I call the CL program with valid values for each paramters, it prompts me for a date (even though, I pass a valid value like '2002-06-09-00.27.52.12345 6').
How do I stop it from happening?
Your help is much appreciated.
What I do not understand is, each time I call the CL program with valid values for each paramters, it prompts me for a date (even though, I pass a valid value like '2002-06-09-00.27.52.12345
How do I stop it from happening?
Your help is much appreciated.
ASKER
Sure, no prob, here it is:
CL Program
/************************* ********** ********** ********** */
PGM PARM(&PAR1 &DATIME &PAR2)
/************************* ********** ********** ********** */ /* DECLARES */
/************************* ********** ********** ********** */
DCL VAR(&PAR1) TYPE(*CHAR) LEN(10)
DCL VAR(&DATIME) TYPE(*CHAR) LEN(26)
DCL VAR(&DATIME2) TYPE(*CHAR) LEN(28)
DCL VAR(&PAR2) TYPE(*CHAR) LEN(10)
DCL VAR(&PAR3) TYPE(*CHAR) LEN(10)
CHGVAR VAR(&PAR3) VALUE('ABC' *CAT %SST(&PAR1 1 3) *TCAT %SST(&DATIME 6 2) *TCAT %SST(&DATIME 9 2))
CHGVAR VAR(&MDATIME2) VALUE(''' *CAT &DATIME *CAT ''')
STRQMQRY QMQRY(MYQRY) OUTPUT(*OUTFILE)OUTFILE(&P AR2/&PAR3) OUTMBR(*FIRST *REPLACE) SETVAR((PAR1 &PAR1)(DATIME2 &DATIME2))
FINAL: ENDPGM
CL Program
/*************************
PGM PARM(&PAR1 &DATIME &PAR2)
/*************************
/*************************
DCL VAR(&PAR1) TYPE(*CHAR) LEN(10)
DCL VAR(&DATIME) TYPE(*CHAR) LEN(26)
DCL VAR(&DATIME2) TYPE(*CHAR) LEN(28)
DCL VAR(&PAR2) TYPE(*CHAR) LEN(10)
DCL VAR(&PAR3) TYPE(*CHAR) LEN(10)
CHGVAR VAR(&PAR3) VALUE('ABC' *CAT %SST(&PAR1 1 3) *TCAT %SST(&DATIME 6 2) *TCAT %SST(&DATIME 9 2))
CHGVAR VAR(&MDATIME2) VALUE(''' *CAT &DATIME *CAT ''')
STRQMQRY QMQRY(MYQRY) OUTPUT(*OUTFILE)OUTFILE(&P
FINAL: ENDPGM
emmle,
4 questions
1. did you copy and paste this into the question area. if so what is the variable called &MDATIME2. Its not declared in the CL.
2. what question is posed when the date is requested
3. are you sure this CL matches the object program, I can't see how this CL can prompt for a date, unless the prompt is coming from the QMQUERY (use RTVCLSRC into a test library. create a QCLSRC file first in that library.)
4. have you tried running the program with interactive source debug (STRISDB) to check the values the CL is getting
let me know
Geoff
4 questions
1. did you copy and paste this into the question area. if so what is the variable called &MDATIME2. Its not declared in the CL.
2. what question is posed when the date is requested
3. are you sure this CL matches the object program, I can't see how this CL can prompt for a date, unless the prompt is coming from the QMQUERY (use RTVCLSRC into a test library. create a QCLSRC file first in that library.)
4. have you tried running the program with interactive source debug (STRISDB) to check the values the CL is getting
let me know
Geoff
ASKER
Geoff,
1. My mistake, &mdatime2 should be &datime2
2. I will get back to you on this one.
3. The query is basically a box standard Select statement.
No prompt there whatsoever.
4. Yes, I have used STRISDB and I am getting the values that I am expecting. Everything works fine. But again, it is prompting for the date.
I hope this helps.
1. My mistake, &mdatime2 should be &datime2
2. I will get back to you on this one.
3. The query is basically a box standard Select statement.
No prompt there whatsoever.
4. Yes, I have used STRISDB and I am getting the values that I am expecting. Everything works fine. But again, it is prompting for the date.
I hope this helps.
Are you sure it's asking for a date, not one of the other params.
What element is the request messsage coming from. Is it QM or CL?
Geoff
What element is the request messsage coming from. Is it QM or CL?
Geoff
ASKER
OK, having gone through STRISDB, I can tell you that it is when the step STRQMQRY QMQRY(MYQRY) OUTPUT(*OUTFILE)OUTFILE(&P AR2/&PAR3) OUTMBR(*FIRST *REPLACE) SETVAR((PAR1 &PAR1)(DATIME2 &DATIME2) is executed that the following question is asked:
Type a value for variable "DATIME2" and press Enter.
Type reply, press Enter.
Reply . . .
F3=Exit F12=Cancel
In fact, what I have also found is that I can get rid off DATIME2 and use directly DATIME as it does not make one bit of difference.
Type a value for variable "DATIME2" and press Enter.
Type reply, press Enter.
Reply . . .
F3=Exit F12=Cancel
In fact, what I have also found is that I can get rid off DATIME2 and use directly DATIME as it does not make one bit of difference.
Ok emmle, glad it's sorted. If you run this cl again and check the value of DATIME2, you'll find it contains the value ' *CAT &DATIME *CAT ' rather than '2002-06-09-00.27.52.12345 6' as expected. Quotes are always a bit of a pain in CL.
Nice talking to you
Geoff
Nice talking to you
Geoff
ASKER
Not quite sorted yet. I absolutely agree with you and the value of DATIME2. However, even with just using DATIME, I still don't comprehend as to why it does prompt me for the date. I feel I am going round in circle.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Geoff,
You have finally cracked it. To thank you for your trouble, I have doubled the number of points.
Nice talking to you.
You have finally cracked it. To thank you for your trouble, I have doubled the number of points.
Nice talking to you.
ASKER
Thanks for your help, it is much appreciated.
Thanks, but you needn't have done that. Nice to be able to help.
Geoff
Geoff
Hi Geoff ,
How do I define LIKE for millier kind of situation.
Thx
How do I define LIKE for millier kind of situation.
Thx
Geoff (macbone)