|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Odd case behaviour of z/OS MQ programs called from TSO. |
« View previous topic :: View next topic » |
Author |
Message
|
zpat |
Posted: Tue Apr 04, 2023 8:17 am Post subject: Odd case behaviour of z/OS MQ programs called from TSO. |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
MQ 9.2, z/OS
I've been playing with invoking some of the IBM MQ batch programs in the foreground under a TSO REXX.
Examples being QLOAD or CSQ4BCG0
I can invoke them using LINKMVS or using the ISPEXEC SELECT PGM or using the CALL command.
However I start them - they get a MQRC 2058 - and the error message reports the QM name in lower case - such as qxyz.
The parameters I have been passing all have the QM name in upper case such as QXYZ.
The QM name is of course in uppercase. I am at a loss to understand where/how these programs are getting the QM name in lower case.
For example:
PARM = "'QXYZ PT.TEST'"
"CALL 'SYS1.SCSQLOAD(CSQ4BCG0)'" PARM
****
Output error is in the form of MQRC 2058 - qxyz _________________ Well, I don't think there is any question about it. It can only be attributable to human error. This sort of thing has cropped up before, and it has always been due to human error. |
|
Back to top |
|
 |
bruce2359 |
Posted: Tue Apr 04, 2023 8:58 am Post subject: Re: Odd behaviour of z/OS MQ programs called from TSO. |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
zpat wrote: |
MQ 9.2, z/OS
I've been playing with invoking some of the IBM MQ batch programs in the foreground under a TSO REXX.
Examples being QLOAD or CSQ4BCG0
I can invoke them using LINKMVS or using the ISPEXEC SELECT PGM or using the CALL command.
However I start them - they get a MQRC 2058 - and the error message reports the QM name in lower case - such as qxyz.
The parameters I have been passing all have the QM name in upper case such as QXYZ.
The QM name is of course in uppercase. I am at a loss to understand where/how these programs are getting the QM name in lower case.
For example:
PARM = "'QXYZ PT.TEST'"
"CALL 'SYS1.SCSQLOAD(CSQ4BCG0)'" PARM
****
Output error is in the form of MQRC 2058 - qxyz |
So, all your attempts to execute MQ utilities in foreground fail? How about non-MQ apps? _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
bruce2359 |
Posted: Tue Apr 04, 2023 9:30 am Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
https://www.ibm.com/docs/en/zos/2.1.0?topic=cce-example-3
suggests
Quote: |
call 'd58abc.pcp.load(mod1)' '/abc'
The parameter to be passed: The character string ABC |
_________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
zpat |
Posted: Tue Apr 04, 2023 11:06 am Post subject: |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
This looks suspicious
https://www.ibm.com/docs/en/zos/2.1.0?topic=tsoe-using-call-command-run-your-application
Quote: |
program_parms
A list of runtime options and program parameters passed to the main routine. Use a slash (/) to separate the runtime options and program parameters.
ASIS
Specifies that the program parameters are to be left in their original case. For C or C++, however, you must specify at least one lowercase character in the program parameter string for the case to be preserved, otherwise C or C++ lowercases the string. |
Adding ASIS (and ensuring at least one lower case letter) stopped the folding to lower case.
Worth trying the slash (/) but that alone didn't fix it.
Weird - never seen that before. Something to do with the C/C++ language (which these programs are coded in).
Incidentally the reason for running these under REXX was to catch the output in a temp dataset and then invoke ISPF BROWSE on it.
So a "poor man's" online message browser for TSO/ISPF. Actually quite impressive for only a few lines of REXX. _________________ Well, I don't think there is any question about it. It can only be attributable to human error. This sort of thing has cropped up before, and it has always been due to human error. |
|
Back to top |
|
 |
bruce2359 |
Posted: Tue Apr 04, 2023 12:23 pm Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
zpat wrote: |
This looks suspicious ...
Weird - never seen that before. Something to do with the C/C++ language (which these programs are coded in). |
Not C/C++ or TSO precisely. It's more a z/OS UNIX System Services thing.
z/OS UNIX branding (originally called Open Edition pre-branding) required that z/OS support mixed-case in path names and file names (on DD statements and other). The resulting conundrum of what to no longer fold into upper-case by MVS default, and what to leave in lower- mixed-case.
Unrelated factoids: Branding USS also demanded that MVS internals support another set of primitives: original MVS: OPEN, CLOSE, LINK, XCTL, GETMAIN, as examples. UNIX function calls: pthread_create(), fork(), kill(), pipe(), chmod(), as examples. _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
cicsprog |
Posted: Mon Aug 07, 2023 9:35 am Post subject: |
|
|
Partisan
Joined: 27 Jan 2002 Posts: 347
|
FYI
REXX has a built in function for changing case:
var1 = TRANSLATE(STRING,UPPER,LOWER)
or the other direction
var2 = TRANSLATE(STRING,LOWER,UPPER)
in addition, on a ISPF PANEL it has the ability to set an attribute on an input field so that the data, as entered on the panel, gets passed back to the REXX as typed - lower, upper, or mixed case. |
|
Back to top |
|
 |
bruce2359 |
Posted: Tue Aug 08, 2023 2:36 pm Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
But, what of mixed-case? _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
cicsprog |
Posted: Tue Aug 08, 2023 4:23 pm Post subject: |
|
|
Partisan
Joined: 27 Jan 2002 Posts: 347
|
|
Back to top |
|
 |
zpat |
Posted: Wed Sep 20, 2023 3:29 am Post subject: |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
cicsprog wrote: |
FYI
REXX has a built in function for changing case:
var1 = TRANSLATE(STRING,UPPER,LOWER)
or the other direction
var2 = TRANSLATE(STRING,LOWER,UPPER)
in addition, on a ISPF PANEL it has the ability to set an attribute on an input field so that the data, as entered on the panel, gets passed back to the REXX as typed - lower, upper, or mixed case. |
The problem was the automatic case conversion from upper to lower when the USS program is invoked. So even if it was originally presented correctly - it didn't stay that way.
However the ASIS operand was one way around it. _________________ Well, I don't think there is any question about it. It can only be attributable to human error. This sort of thing has cropped up before, and it has always been due to human error. |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|