ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » Mainframe, CICS, TXSeries » Odd case behaviour of z/OS MQ programs called from TSO.

Post new topic  Reply to topic
 Odd case behaviour of z/OS MQ programs called from TSO. « View previous topic :: View next topic » 
Author Message
zpat
PostPosted: Tue Apr 04, 2023 8:17 am    Post subject: Odd case behaviour of z/OS MQ programs called from TSO. Reply with quote

Jedi Council

Joined: 19 May 2001
Posts: 5849
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
View user's profile Send private message
bruce2359
PostPosted: Tue Apr 04, 2023 8:58 am    Post subject: Re: Odd behaviour of z/OS MQ programs called from TSO. Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9394
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
View user's profile Send private message
bruce2359
PostPosted: Tue Apr 04, 2023 9:30 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9394
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
View user's profile Send private message
zpat
PostPosted: Tue Apr 04, 2023 11:06 am    Post subject: Reply with quote

Jedi Council

Joined: 19 May 2001
Posts: 5849
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
View user's profile Send private message
bruce2359
PostPosted: Tue Apr 04, 2023 12:23 pm    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9394
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
View user's profile Send private message
cicsprog
PostPosted: Mon Aug 07, 2023 9:35 am    Post subject: Reply with quote

Partisan

Joined: 27 Jan 2002
Posts: 314

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
View user's profile Send private message
bruce2359
PostPosted: Tue Aug 08, 2023 2:36 pm    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9394
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
View user's profile Send private message
cicsprog
PostPosted: Tue Aug 08, 2023 4:23 pm    Post subject: Reply with quote

Partisan

Joined: 27 Jan 2002
Posts: 314

https://www.ibm.com/docs/en/cics-ts/5.2?topic=instructions-letter-case-rexx

https://www.ibm.com/docs/en/cics-ts/5.2?topic=application-preventing-translation-uppercase
Back to top
View user's profile Send private message
zpat
PostPosted: Wed Sep 20, 2023 3:29 am    Post subject: Reply with quote

Jedi Council

Joined: 19 May 2001
Posts: 5849
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
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » Mainframe, CICS, TXSeries » Odd case behaviour of z/OS MQ programs called from TSO.
Jump to:  



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
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.