Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

exec information

3 views
Skip to first unread message

Andreas Fischer

unread,
Nov 11, 2010, 7:18:32 AM11/11/10
to
hi,

i have a self-written rexx function where i would like to determine the name of the exec who called that function? is there any possibility to do so? sysvar('SYSICMD') doesn't return the name of the calling exec.

bye,
andi

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to LIST...@VM.MARIST.EDU with the message: INFO TSO-REXX

Bob Bridges

unread,
Nov 11, 2010, 10:23:01 PM11/11/10
to
You have a REXX function that wrote ITSELF? Now that I have really got to
see; would you be willing to share it?

I don't think I've ever seen an easy way to discover the name of the routine
that called my routine, though. I can learn various things about the nature
of the call, but I think if anyone here has a way to do what you want it'll
involve peeks.

---
Bob Bridges, rhb...@attglobal.net, cell 336 382-7313
work bob.b...@libertymutual.com, 317 581-6487

/* Do you know what constitutes a "hate crime"? Put your thinking caps on.
What tools do we need to determine whether a crime was motivated by hate or
prejudice? Answer: We need thought police. -from "See, I Told You So" by
Rush Limbaugh */

-----Original Message-----
From: Andreas Fischer
Sent: Thursday, November 11, 2010 07:18

i have a self-written rexx function where i would like to determine the name
of the exec who called that function? is there any possibility to do so?
sysvar('SYSICMD') doesn't return the name of the calling exec.

----------------------------------------------------------------------

Andreas Fischer

unread,
Nov 12, 2010, 2:57:10 AM11/12/10
to
well no, i wrote the function, not the function wrote itself :-) sorry if my english is ambigious and/or faulty.

bye,
andi

Bob Bridges

unread,
Nov 12, 2010, 9:19:29 AM11/12/10
to
LOL. No, Andreas, in fact judging by your post I assumed English was your
first language. I was just making fun of a mistake that Anglophones make,
too - was being a proofreader, in other words. No scorn is implied, nor
would it be deserved.

/* It's so simple to be wise. Just think of something stupid to say and
then don't say it. -Sam Levenson */

-----Original Message-----
From: Andreas Fischer
Sent: Friday, November 12, 2010 02:57

well no, i wrote the function, not the function wrote itself :-) sorry if my
english is ambigious and/or faulty.

--- TSO REXX Discussion List <TSO-...@VM.MARIST.EDU> schrieb am 12.11.2010
04:22:17:

> You have a REXX function that wrote ITSELF? Now that I have really got to
> see; would you be willing to share it?
>

> -----Original Message-----
> From: Andreas Fischer
> Sent: Thursday, November 11, 2010 07:18
>

> i have a self-written rexx function where i would like to determine....

adrianstern

unread,
Nov 13, 2010, 5:00:48 AM11/13/10
to
On Nov 11, 1:18 pm, andreas.fisc...@GENERALI.AT (Andreas Fischer)
wrote:

> hi,
>
> i have a self-written rexx function where i would like to determine the name of the exec who called that function? is there any possibility to do so? sysvar('SYSICMD') doesn't return the name of the calling exec.
>
> bye,
> andi
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to LISTS...@VM.MARIST.EDU with the message: INFO TSO-REXX

The simple answer is for the calling program to pass its own name in
the call. Why make work?

Glenn Knickerbocker

unread,
Nov 15, 2010, 12:57:37 PM11/15/10
to
On 11/11/2010 10:23 PM, Bob Bridges wrote:
> I don't think I've ever seen an easy way to discover the name of the routine
> that called my routine, though.

Well, if you've got BatchPipes installed, BatchPipeWorks makes it easy:

'PIPE rexxvars 1 | var callersource'

puts the calling exec's source string into the variable CALLERSOURCE.

I don't think there's any way for REXX to get at the information
directly, though. You need some external program.

�R

Glenn Knickerbocker

unread,
Nov 15, 2010, 12:59:47 PM11/15/10
to
On 11/11/2010 10:23 PM, Bob Bridges wrote:
> > I don't think I've ever seen an easy way to discover the name of the routine
> > that called my routine, though.

Well, if you've got BatchPipes installed, BatchPipeWorks makes it easy:

'PIPE rexxvars 1 | var callersource'

puts the calling exec's source string into the variable CALLERSOURCE.

I don't think there's any way for REXX to get at the information
directly, though. You need some external program.

�R

----------------------------------------------------------------------

Bob Bridges

unread,
May 14, 2012, 10:26:46 AM5/14/12
to
I find I need to write a function that looks for a substring in the target,
and returns the WORDPOS of the word the string is in. For example, I'm
looking for 'XXX' in a line of COBOL code. If cobol_line equals

023000 MOVE '23' TO WS-XXX-ERR-CODE

...then myfunction('XXX',cobol_line) will return 5 (because 'XXX' is found
in the 5th word of the string, you see). Now, I can do this, but am I
reïnventing the wheel? Is there some REXX function I'm forgetting?

---
Bob Bridges, rhb...@attglobal.net, cell 336 382-7313

/* One hundred percent of the shots you don't take don't go in. -Wayne
Gretzky */

Walter Pachl

unread,
May 14, 2012, 10:36:39 AM5/14/12
to
Do i=1 To words(string)
Parse Var string w string
If pos('XXX',w)>0 then
Say 'XXX found in word' i
Incomplete and untested
---- Bob Bridges <rhb...@ATTGLOBAL.NET> schrieb:

Bill Ashton

unread,
May 14, 2012, 10:47:17 AM5/14/12
to
Here's my routine...tested minimally:
000001 /* rexx
*/
000002

000003 a = "023000 MOVE '23' TO
WS-XXX-ERR-CODE";
000004 b =
Findme("XXX",a);
000005 Say
b
000006

000007
Exit;
000008

000009 Findme:
Procedure
000010 Parse arg teststr,
fullstr;
000011

000012 Do which = Words(fullstr) to 1 by
-1
000013 If Pos(teststr,fullstr) > WOrdindex(fullstr,which) Then Return
which;
000014
End
000015 Return
0;

Billy
--
Thank you and best regards,
*Billy Ashton*

Bill Ashton

unread,
May 14, 2012, 10:50:14 AM5/14/12
to
Incidentally, I couldn't find a native routine that would do this
intrinsically.
Billy

Bob Bridges

unread,
May 14, 2012, 10:55:09 AM5/14/12
to
Yeah, I know, few will actually answer the question but many will be unable
to resist suggesting their own solution. Well, I'm no better :) - here's
what I came up with:

/* Find needle in haystack and return which wordpos it's in. */
strwordpos: procedure
parse arg needle,haystack
if pos(needle,haystack)=0 then return 0
parse var haystack v1 (needle) .
return words(v1'X')

It looks more complex, but I'm betting that when you have to call it
thousands of times (as I do in this case) it'll run faster.

---
Bob Bridges, rhb...@attglobal.net, cell 336 382-7313

/* One hundred percent of the shots you don't take don't go in. -Wayne
Gretzky */

-----Original Message-----
From: Walter Pachl
Sent: Monday, May 14, 2012 10:36

Do i=1 To words(string)
Parse Var string w string
If pos('XXX',w)>0 then
Say 'XXX found in word' i

Incomplete and untested

---- Bob Bridges <rhb...@ATTGLOBAL.NET> schrieb:
> I find I need to write a function that looks for a substring in the
> target, and returns the WORDPOS of the word the string is in. For
> example, I'm looking for 'XXX' in a line of COBOL code. If cobol_line
> equals
>
> 023000 MOVE '23' TO WS-XXX-ERR-CODE
>
> ...then myfunction('XXX',cobol_line) will return 5 (because 'XXX' is found
> in the 5th word of the string, you see). Now, I can do this, but am I
> reïnventing the wheel? Is there some REXX function I'm forgetting?

Paul Gilmartin

unread,
May 14, 2012, 11:01:16 AM5/14/12
to
On May 14, 2012, at 08:26, Bob Bridges wrote:

> I find I need to write a function that looks for a substring in the target,
> and returns the WORDPOS of the word the string is in. For example, I'm
> looking for 'XXX' in a line of COBOL code. If cobol_line equals
>
> 023000 MOVE '23' TO WS-XXX-ERR-CODE
>
> ...then myfunction('XXX',cobol_line) will return 5 (because 'XXX' is found
> in the 5th word of the string, you see).
>
I'd try (untested):

parse value cobol_line with prefix 'XXX' .
return( words( prefix'A' ) )

-- gil

Bob Bridges

unread,
May 14, 2012, 11:18:43 AM5/14/12
to
Gil, that's the routine I ended up using, with one addition: If 'XXX'
happens not to be in to be in cobol_line at all, this logic will return 1
instead of 0, so I had to do a POS too.

...Come to think of it, though, I can do the POS only if it proposes to
return 1, thus saving a little processing time.

---
Bob Bridges, rhb...@attglobal.net, cell 336 382-7313

/* One hundred percent of the shots you don't take don't go in. -Wayne
Gretzky */

-----Original Message-----
From: Paul Gilmartin
Sent: Monday, May 14, 2012 10:59
>
I'd try (untested):

parse value cobol_line with prefix 'XXX' .
return( words( prefix'A' ) )

--- On May 14, 2012, at 08:26, Bob Bridges wrote:
> I find I need to write a function that looks for a substring in the
> target, and returns the WORDPOS of the word the string is in. For
> example, I'm looking for 'XXX' in a line of COBOL code. If cobol_line
> equals
>
> 023000 MOVE '23' TO WS-XXX-ERR-CODE
>
> ...then myfunction('XXX',cobol_line) will return 5 (because 'XXX' is found
> in the 5th word of the string, you see).

Paul Gilmartin

unread,
May 14, 2012, 12:30:03 PM5/14/12
to
On May 14, 2012, at 09:12, Bob Bridges wrote:

> Gil, that's the routine I ended up using, with one addition: If 'XXX'
> happens not to be in to be in cobol_line at all, this logic will return 1
> instead of 0, so I had to do a POS too.
>
Thanks. I had neglected that. And we both (may have)
neglected the cases:

o XXX is the null string. (But IIRC, POS returns 0 for that.)

o XXX contains a blank. Ugh! But your routine will then
return the first of the words it spans. Trickier if it
begins with a blank.

> ...Come to think of it, though, I can do the POS only if it proposes to
> return 1, thus saving a little processing time.
>
Rarely worth optimizing for the error case, but perhaps
(again untested):

/* Find needle in haystack and return which wordpos it's in. */
strwordpos: procedure
parse arg needle,haystack
parse var haystack v1 (needle) +0 v2
if v2=='' then return 0
return words(v1'X')

(A colleague once performed a test showing that "==" is
faster than "=".)

-- gil

Glenn Knickerbocker

unread,
May 14, 2012, 12:42:19 PM5/14/12
to
On 5/14/2012 10:55 AM, Bob Bridges wrote:
> /* Find needle in haystack and return which wordpos it's in. */
> strwordpos: procedure
> parse arg needle,haystack
> if pos(needle,haystack)=0 then return 0
> parse var haystack v1 (needle) .
> return words(v1'X')

As long as you've found the position of the needle anyway, you could use
it rather than scanning the haystack again--and then you don't need the
concatenation either, and you're left with a one-liner:

Return Words(Left(haystack, Pos(needle, haystack)))

Oh, but the result may differ if the needle begins with a blank. That's
messy for both versions. The LEFT() version will return the number of
the previous word anytime NEEDLE starts with a blank. The PARSE version
will return the number of the previous word if NEEDLE starts with the
exact number of blanks between words (but not *before* the first word):

StrWordPos(' w1', ' w1 w2') /* PARSE version: words('X')=1,
LEFT() version: words(' ')=0 */

StrWordPos(' w2', ' w1 w2') /* PARSE version: words(' w1 X')=2,
LEFT() version: words(' w1 ')=1 */

StrWordPos(' w2', ' w1 w2') /* PARSE version: words(' w1X')=1,
LEFT() version: words(' w1 ')=1 */

It gets even messier when you consider a needle that's all blanks or
more than one word.

ŹR

Bob Bridges

unread,
May 14, 2012, 1:31:44 PM5/14/12
to
In this case it was worth optimizing because I was going to have to check
anyway; so it was just a matter of moving the POS check down and making it
dependent on v2 being nothing. I ended up almost exactly as you did:

/* Find needle in haystack and return which wordpos it's in. */
strwordpos: procedure
parse arg needle,haystack
parse var haystack v1 (needle) v2
if v2=='' then if pos(needle,haystack)=0 then return 0
return words(v1'X')

I had to add the POS call because of the possibility of
strwordpos('XXX','VVV WWW XXX'). Come to think of it, since that's its only
purpose I suppose LASTPOS would be faster.

---
Bob Bridges, rhb...@attglobal.net, cell 336 382-7313

/* One hundred percent of the shots you don't take don't go in. -Wayne
Gretzky */

-----Original Message-----
From: Paul Gilmartin
Sent: Monday, May 14, 2012 12:25

--- On May 14, 2012, at 09:12, Bob Bridges wrote:

> Gil, that's the routine I ended up using, with one addition: If 'XXX'
> happens not to be in to be in cobol_line at all, this logic will return 1
> instead of 0, so I had to do a POS too.

Thanks. I had neglected that. And we both (may have)
neglected the cases:

o XXX is the null string. (But IIRC, POS returns 0 for that.)

o XXX contains a blank. Ugh! But your routine will then
return the first of the words it spans. Trickier if it
begins with a blank.

> ...Come to think of it, though, I can do the POS only if it proposes to
> return 1, thus saving a little processing time.
>
Rarely worth optimizing for the error case, but perhaps
(again untested):

/* Find needle in haystack and return which wordpos it's in. */
strwordpos: procedure
parse arg needle,haystack
parse var haystack v1 (needle) +0 v2
if v2=='' then return 0
return words(v1'X')

(A colleague once performed a test showing that "==" is
faster than "=".)

Paul Gilmartin

unread,
May 14, 2012, 1:49:46 PM5/14/12
to
On May 14, 2012, at 11:30, Bob Bridges wrote:

> I ended up almost exactly as you did:
>
> /* Find needle in haystack and return which wordpos it's in. */
> strwordpos: procedure
> parse arg needle,haystack
> parse var haystack v1 (needle) v2
> if v2=='' then if pos(needle,haystack)=0 then return 0
> return words(v1'X')
>
> I had to add the POS call because of the possibility of
> strwordpos('XXX','VVV WWW XXX'). Come to think of it, since that's its only
> purpose I suppose LASTPOS would be faster.
>
In my case:

parse var haystack v1 (needle) +0 v2

... the "+0" guarantees that if there's a match v2 will be nonempty;
no need for POS. I think (still untested).

But I think I'm calling Glenn the winner.

-- gil

Bill Ashton

unread,
May 14, 2012, 2:35:28 PM5/14/12
to
Glenn, thanks for this brief snippet...short and sweet. I ran some tests
with this against a couple of the other ones posted here, and yours was
faster at least 70% of the time.

Now, in terms of problems with a needle beginning with a space, this by
definition cannot happen. According to the OP's requirement, the purpose of
this is to find "a substring in the target,
and returns the WORDPOS of the word the string is in." If you are looking
for a word position, it by definition is a string delimited by spaces, so
looking for a space in a word cannot be done. The same rationale must be
taken for an imbedded space in needle, as that would also be illogical.

Consequently, if this were implemented according to those requirements, I
expect you would first look for a space in the needle, and return an
"illogical" return code or a 0, and then execute your code.

Billy
--
Thank you and best regards,
*Billy Ashton*

Glenn Knickerbocker

unread,
May 14, 2012, 4:17:08 PM5/14/12
to
On 5/14/2012 2:35 PM, Bill Ashton wrote:
> Now, in terms of problems with a needle beginning with a space, this by
> definition cannot happen. According to the OP's requirement, the purpose of
> this is to find "a substring in the target,
> and returns the WORDPOS of the word the string is in."

Sure, but it's always good to define a function of more general use when
that's possible. I never looked in detail before at how WORDPOS()
handles blanks in its arguments. It ignores all leading and trailing
blanks and multiple blanks between words. To be consistent with that,
this function could squeeze blanks out of both arguments with SPACE()
when the needle contains any blanks:

If Pos(' ', needle) > 0 then Do
/* squeeze blanks out of NEEDLE */
needle = Space(needle)
/* Still blanks? >1 word, so squeeze HAYSTACK too */
If Pos(' ', needle) > 0 then haystack = Space(haystack)
End

That would let you find a word ending in one string followed by a word
starting with another string, irrespective of the blanks in between.

StrWordPos('tail head', 'wordtail headofword') /* returns 1 */

ŹR

Bill Ashton

unread,
May 14, 2012, 4:17:41 PM5/14/12
to
I may have gone far afield here, and have already learned that my code can
be improved, so hav at this. In keeping with the similarity of the WORDPOS
functionality, I have added code to Strip the needle, and to allow starting
at a word other than the beginning of the string.

Let me know what you think...
Billy

StrWordPos: Procedure
Parse Arg needle, haystack, startword; needle =
Strip(needle);
If Datatype(startword) \== "NUM" Then startword = 1;
Return
Words(Left(haystack,Pos(needle,haystack,WordIndex(haystack,startword))));


I also determined that \== is only minimallly faster than \= (in 10K
iterations, 3900x it was faster, 3800x it was equal).

Glenn Knickerbocker

unread,
May 14, 2012, 4:21:28 PM5/14/12
to
On 5/14/2012 2:35 PM, Bill Ashton wrote:
> Now, in terms of problems with a needle beginning with a space, this by
> definition cannot happen. According to the OP's requirement, the purpose of
> this is to find "a substring in the target,
> and returns the WORDPOS of the word the string is in."

Sure, but it's always good to define a function of more general use when
that's possible. I never looked in detail before at how WORDPOS()
handles blanks in its arguments. It ignores all leading and trailing
blanks and multiple blanks between words. To be consistent with that,
this function could squeeze blanks out of both arguments with SPACE()
when the needle contains any blanks:

If Pos(' ', needle) > 0 then Do
/* squeeze blanks out of NEEDLE */
needle = Space(needle)
/* Still blanks? >1 word, so squeeze HAYSTACK too */
If Pos(' ', needle) > 0 then haystack = Space(haystack)
End

That would let you find a word ending in one string followed by a word
starting with another string, irrespective of the blanks in between.

StrWordPos('tail head', 'wordtail headofword') /* returns 1 */

Bill Ashton

unread,
May 14, 2012, 4:29:42 PM5/14/12
to
Good idea, Glenn; I hadn't thought about suppressing the extra
blanks...that would make my new changes like this:

StWrdPos:
Procedure
Parse Arg needle, haystack,
startwd;
needle = Space(needle); haystack =
Space(haystack);
If Datatype(startwd) \= "NUM" Then startwd =
1;
Return
Words(Left(haystack,Pos(needle,haystack,WordIndex(haystack,startwd))));




On Mon, May 14, 2012 at 4:19 PM, Glenn Knickerbocker <No...@bestweb.net>wrote:

> On 5/14/2012 2:35 PM, Bill Ashton wrote:
> > Now, in terms of problems with a needle beginning with a space, this by
> > definition cannot happen. According to the OP's requirement, the purpose
> of
> > this is to find "a substring in the target,
> > and returns the WORDPOS of the word the string is in."
>
> Sure, but it's always good to define a function of more general use when
> that's possible. I never looked in detail before at how WORDPOS()
> handles blanks in its arguments. It ignores all leading and trailing
> blanks and multiple blanks between words. To be consistent with that,
> this function could squeeze blanks out of both arguments with SPACE()
> when the needle contains any blanks:
>
> If Pos(' ', needle) > 0 then Do
> /* squeeze blanks out of NEEDLE */
> needle = Space(needle)
> /* Still blanks? >1 word, so squeeze HAYSTACK too */
> If Pos(' ', needle) > 0 then haystack = Space(haystack)
> End
>
> That would let you find a word ending in one string followed by a word
> starting with another string, irrespective of the blanks in between.
>
> StrWordPos('tail head', 'wordtail headofword') /* returns 1 */
>
> ¬R
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to LIST...@VM.MARIST.EDU with the message: INFO TSO-REXX
>



--
Thank you and best regards,
*Billy Ashton*

Marc Irvin

unread,
May 15, 2012, 3:15:00 PM5/15/12
to
I think you have all missed the most important gotcha. Cobol has literals.

Marc Irvin

Bob Bridges

unread,
May 15, 2012, 5:41:34 PM5/15/12
to
That's ok. For this project I'm running four source-code libraries (four
that I know of so far) through an ISPF 3.14 looking for any reference to
programs named XXXX-something. The first library has something like 25K
members and 15K hits on XXXX, so I'm running the resulting SRCHFOR.LIST
through an Edit macro to figure out which ones I need to look at more
closely. I'm having the Edit macro table lines that say things like CALL
'XXXX1234' or EXEC CICS LINK PROGRAM XXXX1234, and simply count up such
statements as MOVE '23' TO WS-XXXXABCD-ERR-CODE. There are other situations
I can identify -- comments, for example -- but anything still unidentified I
tell the Edit macro to just show me, having by then reduced the number of
hits to something I can screen by eyeball.

My primary goal is to identify the programs that call programs named
XXXX-something, but even lacking an identifiable CALL or LINK or XCTL,
anything that mentions XXXX-something is interesting enough to me that I'll
probably want to think about looking at the program.

If anyone's bored I can give more details, but you guys have answered the
question I had originally.

---
Bob Bridges, rhb...@attglobal.net, cell 336 382-7313

/* It's so simple to be wise. Just think of something stupid to say and
then don't say it. -Sam Levenson */

-----Original Message-----

Bill Ashton

unread,
May 17, 2012, 7:36:18 AM5/17/12
to
Bob, I don't think you could guarantee that scanning the load module will
get <all> the names. For example, if a program could call multiple
subprograms depending on some data condition, they might have set up a call
field in WS, using a literal for the prefix of the prorgram name, and then
fill in the specific suffix at run time. So, if they were to call ACCT1001,
ACCT1002, ACCT1003 or ACCT1004 depending on some condition, they might have:
...10 PGM-CALL-NAME
......15 FILLER PIC X(4) VALUE 'ACCT1'
......15 WHICH-PGM PIC X(3)

and then move 001, 002 or 003 into that field and use that for the CALL.

Another option would be to pass in the subprogram name via a PARM, again
depending on the logic path a prorgram could follow.

Billy

On Thu, May 17, 2012 at 3:44 AM, Bob Bridges <rhb...@attglobal.net> wrote:

> Interesting idea. The search would go faster (I've never tried it, but I
> believe you), and it would eliminate my having to identify comments,
> working-storage variable names and the like. Could I be sure that the only
> references remaining are program calls and the occasional literal
> ("XXXX1234
> WS STARTS HERE", "ERR 143 IN XXXX1234" etc)?
>
> Once I've identified the programs that call these routines, I'll still have
> to examine their source code to see what else is happening. (Finding these
> programs isn't the end of my project, only the beginning.) But here's the
> real question: Is there a way to call a load module named XXXX1234 in a
> way
> that doesn't leave "XXXX1234" somewhere in the load module where a 3.14
> would find it? To put it more clearly, will searching the load modules
> find
> ALL the references to XXXX-something?
>
> ---
> Bob Bridges, rhb...@attglobal.net, cell 336 382-7313
>
> /* My husband gave me a necklace. It's fake. I requested fake. Maybe I'm
> paranoid, but in this day and age I don't want something around my neck
> that's worth more than my head. -Rita Rudner */
>
> -----Original Message-----
> From: Adrian Stern
> Sent: Wednesday, May 16, 2012 03:42
>
> Did you try searching the load modules instead? I usually do as it's far
> quicker
>
> -----Original Message-----
> From: Bob Bridges
> Sent: den 15 maj 2012 23:16
>
> That's ok. For this project I'm running four source-code libraries (four
> that I know of so far) through an ISPF 3.14 looking for any reference to
> programs named XXXX-something. The first library has something like 25K
> members and 15K hits on XXXX, so I'm running the resulting SRCHFOR.LIST
> through an Edit macro to figure out which ones I need to look at more
> closely. I'm having the Edit macro table lines that say things like CALL
> 'XXXX1234' or EXEC CICS LINK PROGRAM XXXX1234, and simply count up such
> statements as MOVE '23' TO WS-XXXXABCD-ERR-CODE. There are other
> situations
> I can identify -- comments, for example -- but anything still unidentified
> I
> tell the Edit macro to just show me, having by then reduced the number of
> hits to something I can screen by eyeball.
>
> My primary goal is to identify the programs that call programs named
> XXXX-something, but even lacking an identifiable CALL or LINK or XCTL,
> anything that mentions XXXX-something is interesting enough to me that I'll
> probably want to think about looking at the program.
>
> If anyone's bored I can give more details, but you guys have answered the
> question I had originally.
>
> -----Original Message-----
> From: Marc Irvin
> Sent: Tuesday, May 15, 2012 15:09
>
> I think you have all missed the most important gotcha. Cobol has literals.
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to LIST...@VM.MARIST.EDU with the message: INFO TSO-REXX
>



--
Thank you and best regards,
*Billy Ashton*

0 new messages