Link to home
Start Free TrialLog in
Avatar of emmle
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.123456').
How do I stop it from happening?

Your help is much appreciated.

Avatar of macbone2
macbone2

emmle, can you give a sample of the CL code which is generating the prompt? I'm not familiar with Query Management queries, but it may just be a CL problem.

Geoff (macbone)
Avatar of emmle

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(&PAR2/&PAR3) OUTMBR(*FIRST *REPLACE) SETVAR((PAR1 &PAR1)(DATIME2 &DATIME2))                                                
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
Avatar of emmle

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.
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
Avatar of emmle

ASKER

OK, having gone through STRISDB, I can tell you that it is when the step STRQMQRY   QMQRY(MYQRY) OUTPUT(*OUTFILE)OUTFILE(&PAR2/&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.
 



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.123456' as expected. Quotes are always a bit of a pain in CL.

Nice talking to you

Geoff
Avatar of emmle

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
Avatar of macbone2
macbone2

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of emmle

ASKER

Geoff,

You have finally cracked it. To thank you for your trouble, I have doubled the number of points.

Nice talking to you.
Avatar of emmle

ASKER

Thanks for your help, it is much appreciated.
Thanks, but you needn't have done that. Nice to be able to help.

Geoff
Hi Geoff ,
How do I define LIKE for millier kind of situation.
Thx