HLASM macros in z/OS UNIX subdirectories.

176 views
Skip to first unread message

McKown, John

unread,
Dec 20, 2011, 10:29:42 AM12/20/11
to ASSEMBL...@listserv.uga.edu
Just for learning, and fun (FSVO "fun"), I'm doing some programming in HLASM for z/OS UNIX. In the spirit of things, I'm keeping the source in UNIX subdirectories and using the "make" UNIX command, in an interactive UNIX shell, to control the assembly (using the "as" UNIX command) and linking (using the "ld" UNIX command). I've run into an irritation. I like to keep my UNIX file names in __lower__ case. The source code in my assembler invokes one of my macros. The source is in lower case. I get a "macro not found" error because the assembler UPPER CASES the macro name before looking for the macro. I guess I understand why HLASM does this. But is there __any__ way to have HLASM r6.0 (PTF UK54260) use lower case? Or am I stuck with making my UNIX resident macro names UPPER CASE? I know that I have the -I to search my UNIX subdirectory set correctly because if I make the UNIX file name UPPER CASE, then it assembles cleanly.

--
John McKown
Systems Engineer IV
IT

Administrative Services Group

HealthMarkets(r)

9151 Boulevard 26 * N. Richland Hills * TX 76010
(817) 255-3225 phone *
john....@healthmarkets.com * www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM

Tancer, Jiri

unread,
Dec 20, 2011, 10:29:59 AM12/20/11
to ASSEMBL...@listserv.uga.edu
I am sorry for my absence. I will be back on Monday 18.7.2011. Thanks Jiri

Ward Able, Grant

unread,
Dec 20, 2011, 10:43:12 AM12/20/11
to ASSEMBL...@listserv.uga.edu
John - will this help?
http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.asma500%2Fasmi102072.htm


Regards - Grant.
Telephone Internal: x1496 London
Telephone External: +44 (0)207 650 1496

Administrative Services Group

HealthMarkets(r)

<BR>_____________________________________________________________
<FONT size=2><BR>
DTCC DISCLAIMER: This email and any files transmitted with it are
confidential and intended solely for the use of the individual or
entity to whom they are addressed. If you have received this email
in error, please notify us immediately and delete the email and any
attachments from your system. The recipient should check this email
and any attachments for the presence of viruses. The company
accepts no liability for any damage caused by any virus transmitted
by this email.</FONT>

Steve Comstock

unread,
Dec 20, 2011, 10:46:59 AM12/20/11
to ASSEMBL...@listserv.uga.edu

Well, it's a little hokey, and I'm not able to test it right
now, but what about having a series of 'copy' statements at
the front of your program that copy in the macro files?


--

Kind regards,

-Steve Comstock
The Trainer's Friend, Inc.

303-355-2752
http://www.trainersfriend.com

* To get a good Return on your Investment, first make an investment!
+ Training your people is an excellent investment

* Try our tool for calculating your Return On Investment
for training dollars at
http://www.trainersfriend.com/ROI/roi.html

Paul Gilmartin

unread,
Dec 20, 2011, 10:47:00 AM12/20/11
to ASSEMBL...@listserv.uga.edu
On Dec 20, 2011, at 08:29, McKown, John wrote:

> Just for learning, and fun (FSVO "fun"), I'm doing some programming in HLASM for z/OS UNIX. In the spirit of things, I'm keeping the source in UNIX subdirectories and using the "make" UNIX command, in an interactive UNIX shell, to control the assembly (using the "as" UNIX command) and linking (using the "ld" UNIX command). I've run into an irritation. I like to keep my UNIX file names in __lower__ case. The source code in my assembler invokes one of my macros. The source is in lower case. I get a "macro not found" error because the assembler UPPER CASES the macro name before looking for the macro. I guess I understand why HLASM does this. But is there __any__ way to have HLASM r6.0 (PTF UK54260) use lower case? Or am I stuck with making my UNIX resident macro names UPPER CASE? I know that I have the -I to search my UNIX subdirectory set correctly because if I make the UNIX file name UPPER CASE, then it assembles cleanly.
>

Right. If HLASM can do it for EXTRNs, why not for macros.
If Binder supports a Mixed/UPPER switch, why not HLASM?

In the interim, a short awk or sed script (I don't know perl)
could create symlinks with HLASM-friendly names.

We've experimented with bilingual C/HLASM copybooks. Some
in production, in fact. In C:

#define MACRO
#include "FOO"

Then in FOO:

MACRO /* assembler code; ignored by C
&L FOO args
*/ C declaration /*
HLASM declaration
*/ C declaration 2 /*
HLASM declaration 2
...

-- gil

Thomas David Rivers

unread,
Dec 20, 2011, 10:56:03 AM12/20/11
to ASSEMBL...@listserv.uga.edu
>
> Just for learning, and fun (FSVO "fun"), I'm doing some programming
> in HLASM for z/OS UNIX. In the spirit of things, I'm keeping the source
> in UNIX subdirectories and using the "make" UNIX command, in an
> interactive UNIX shell, to control the assembly (using the "as" UNIX
> command) and linking (using the "ld" UNIX command). I've run into an
> irritation. I like to keep my UNIX file names in __lower__ case. The
> source code in my assembler invokes one of my macros. The source is
> in lower case. I get a "macro not found" error because the assembler
> UPPER CASES the macro name before looking for the macro. I guess I
> understand why HLASM does this. But is there __any__ way to have HLASM
> r6.0 (PTF UK54260) use lower case? Or am I stuck with making my UNIX
> resident macro names UPPER CASE? I know that I have the -I to search
> my UNIX subdirectory set correctly because if I make the UNIX file
> name UPPER CASE, then it assembles cleanly.
>
> --
> John McKown
> Systems Engineer IV
> IT

<shameful plug>
Well - I don't know of a way in HLASM - but the Dignus assembler
in that environment has a pretty powerful search mechanism that
lets you do precisely that...

You can cause it to use lower or upper-case letters, append
a suffix (e.g. ".mac") or just about anything you'd like.

This works under z/OS UNIX and all the other UNIXes/Linuxes we support.

You can also do cool things like put your maclib members in a ZIP file
and have it look there.
</shameful plug>

Happy Holidays everyone!!!

- Dave Rivers -

--
riv...@dignus.com Work: (919) 676-0847
Get your mainframe programming tools at http://www.dignus.com

McKown, John

unread,
Dec 20, 2011, 10:59:45 AM12/20/11
to ASSEMBL...@listserv.uga.edu
I tried NOCOMPAT and COMPAT(MACROCASE,NOCASE) but had the same problem. Doesn't appear to apply to macro names.

John McKown

Systems Engineer IV

IT

Administrative Services Group

HealthMarkets(r)

9151 Boulevard 26 * N. Richland Hills * TX 76010

(817) 255-3225 phone *

john....@healthmarkets.com * www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM

McKown, John

unread,
Dec 20, 2011, 11:00:33 AM12/20/11
to ASSEMBL...@listserv.uga.edu
Tried " COPY regs" and got the same problem: REGS is upper cased in the message.

John McKown

Systems Engineer IV

IT

Administrative Services Group

HealthMarkets(r)

9151 Boulevard 26 * N. Richland Hills * TX 76010

(817) 255-3225 phone *

john....@healthmarkets.com * www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM

> -----Original Message-----
> From: IBM Mainframe Assembler List
> [mailto:ASSEMBL...@LISTSERV.UGA.EDU] On Behalf Of Steve Comstock
> Sent: Tuesday, December 20, 2011 9:47 AM
> To: ASSEMBL...@LISTSERV.UGA.EDU
> Subject: Re: HLASM macros in z/OS UNIX subdirectories.
>

Paul Gilmartin

unread,
Dec 20, 2011, 11:02:06 AM12/20/11
to ASSEMBL...@listserv.uga.edu
On Dec 20, 2011, at 08:43, Ward Able, Grant wrote:

Where I read:

CASE
Instructs the assembler to maintain uppercase alphabetic character set
compatibility with earlier assemblers. It restricts language elements
to uppercase alphabetic characters A through Z if they were so restricted
in earlier assemblers.

> -----Original Message-----
> From: IBM Mainframe Assembler List [mailto:ASSEMBL...@LISTSERV.UGA.EDU] On Behalf Of McKown, John
> Sent: 20 December 2011 15:30
>

> Just for learning, and fun (FSVO "fun"), I'm doing some programming in HLASM for z/OS UNIX.

But beware. It's not well exercised. I've had a few APARS on
things such as 0C4 ABENDs because FREEMAIN wasn't using the same
key as GETMAIN (twice, IIRC -- regressed in a subsequent release)
and nested COPY commands failing to POINT to the right place after
exiting the inner COPY. Mostly DfSMS fault, not HLASM. I originally
discovered some of these problems using a UNIX directory in my Rexx
SYSEXEC concatenation, but that's not supported, but I was able
to reproduce them with HLASM SYSLIB, where they are supported and
were fixed. The PTFs repaired Rexx likewise.

> In the spirit of things, I'm keeping the source in UNIX subdirectories and using the "make" UNIX command, in an interactive UNIX shell, to control the assembly (using the "as" UNIX command) and linking (using the "ld" UNIX command). I've run into an irritation. I like to keep my UNIX file names in __lower__ case. The source code in my assembler invokes one of my macros. The source is in lower case. I get a "macro not found" error because the assembler UPPER CASES the macro name before looking for the macro. I guess I understand why HLASM does this. But is there __any__ way to have HLASM r6.0 (PTF UK54260) use lower case? Or am I stuck with making my UNIX resident macro names UPPER CASE? I know that I have the -I to search my UNIX subdirectory set correctly because if I make the UNIX file name UPPER CASE, then it assembles cleanly.
>

And the "cc" command (I don't know about"as") gratuitously forces the
argument of SYSPARM to upper case, notwithstanding that HLASM tolerates
all argument names and values in mixed case, and when invoked from JCL
accepts SYSPARM (quoted, of course) ASIS. I haven't tried a PMR
on this.

-- gil

McKown, John

unread,
Dec 20, 2011, 11:02:35 AM12/20/11
to ASSEMBL...@listserv.uga.edu
Yes. I did:

for i in *;do j=$(echo $i|tr '[a-z]' '[A-Z]');ln -s $i $j;done

to get "REGS" as a symlink to "regs". What a PITA.

--
John McKown
Systems Engineer IV
IT

Administrative Services Group

HealthMarkets(r)

9151 Boulevard 26 * N. Richland Hills * TX 76010
(817) 255-3225 phone *
john....@healthmarkets.com * www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM

> -----Original Message-----


> From: IBM Mainframe Assembler List

> [mailto:ASSEMBL...@LISTSERV.UGA.EDU] On Behalf Of Paul Gilmartin
> Sent: Tuesday, December 20, 2011 9:47 AM
> To: ASSEMBL...@LISTSERV.UGA.EDU
> Subject: Re: HLASM macros in z/OS UNIX subdirectories.
>

McKown, John

unread,
Dec 20, 2011, 11:03:55 AM12/20/11
to ASSEMBL...@listserv.uga.edu
Would be nice. But even talking to by boss about anything which costs money is a good way to get a dirty look. We're still in the budget downsize mode. Likely will be "forever".

John McKown

Systems Engineer IV

IT

Administrative Services Group

HealthMarkets(r)

9151 Boulevard 26 * N. Richland Hills * TX 76010

(817) 255-3225 phone *

john....@healthmarkets.com * www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM

> -----Original Message-----
> From: IBM Mainframe Assembler List
> [mailto:ASSEMBL...@LISTSERV.UGA.EDU] On Behalf Of Thomas
> David Rivers
> Sent: Tuesday, December 20, 2011 9:56 AM
> To: ASSEMBL...@LISTSERV.UGA.EDU
> Subject: Re: HLASM macros in z/OS UNIX subdirectories.
>
> >

David Bond

unread,
Dec 20, 2011, 11:10:47 AM12/20/11
to ASSEMBL...@listserv.uga.edu
On Tue, 20 Dec 2011 08:47:00 -0700, Paul Gilmartin wrote:
>Right. If HLASM can do it for EXTRNs, why not for macros.
>If Binder supports a Mixed/UPPER switch, why not HLASM?

The binder actually supports UNIX files. HLASM uses BPAM. This mess is a
result of z/OS's BPAM support of UNIX files.

David

McKown, John

unread,
Dec 20, 2011, 11:24:47 AM12/20/11
to ASSEMBL...@listserv.uga.edu
> -----Original Message-----
> From: IBM Mainframe Assembler List
> [mailto:ASSEMBL...@LISTSERV.UGA.EDU] On Behalf Of David Bond
> Sent: Tuesday, December 20, 2011 10:11 AM
> To: ASSEMBL...@LISTSERV.UGA.EDU
> Subject: Re: HLASM macros in z/OS UNIX subdirectories.
>

So, hopefully, some future version of HLASM will directly support UNIX files. The BPAM support for UNIX seems to be a bit "lacking". I say this because BPAM does support using all possible hex values as a member name, excluding 8x'FF'. SMP/E uses really weird member names successfully. And you can even browse or edit them from ISPF. Hum, since the name in the message is UPPER CASED, perhaps this particular "problem" is due to HLASM after all.

--
John McKown
Systems Engineer IV
IT

Administrative Services Group

Paul Gilmartin

unread,
Dec 20, 2011, 11:27:37 AM12/20/11
to ASSEMBL...@listserv.uga.edu
On Dec 20, 2011, at 08:56, Thomas David Rivers wrote:
>
> <shameful plug>
> Well - I don't know of a way in HLASM - but the Dignus assembler
> in that environment has a pretty powerful search mechanism that
> lets you do precisely that...
>
> You can cause it to use lower or upper-case letters, append
> a suffix (e.g. ".mac") or just about anything you'd like.
>
> This works under z/OS UNIX and all the other UNIXes/Linuxes we support.
>
> You can also do cool things like put your maclib members in a ZIP file
> and have it look there.
> </shameful plug>
>
I think Tachyon does about the same. And Tachyon may be trailing
Dignus in support of z196 opcodes.

Don't know about z390. But the source is available. Haven't
even tried z390 with a concatenation/searchpath of directories.

From the earlier cited:

http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.asma500%2Fasmi102072.htm

CASE
Instructs the assembler to maintain uppercase alphabetic character set
compatibility with earlier assemblers. It restricts language elements
to uppercase alphabetic characters A through Z if they were so restricted
in earlier assemblers.

It becomes a question of whether macro names are "language elements".
I'd say, "No." HLASM disagrees with me. The criterion is that
opcodes are enumerated in a Reference Manual; user-defined macro
names are not.

HLASM provides exits for I/O processing. We've used them, exactly
for source/macros in UNIX directories, prior to the availability
of NFS. I had no cause to investigate whether the exit can
perform the OPEN and defer all further processing to HLASM.

-- gil

Paul Gilmartin

unread,
Dec 20, 2011, 11:41:04 AM12/20/11
to ASSEMBL...@listserv.uga.edu

I wonder how IBM made POINT work with UNIX files? A more
modern assembler design would eschew NOTE/POINT and use
multiple DCBs for nested COPYs.

I had a performance APAR where I reported that Binder was
orders of magnitude slower writing SYSPRINT to a UNIX file
than piping to "cat" writing to a UNIX file. IBM's
resolution was to modify Binder to OPEN the SYSPRINT path
and use BSAM/QSAM. Apparently Binder had re-invented
the flat tire. (In fairness, Binder supported UNIX files
before the BSAM/QSAM support was available for such.)

(Veering off-topic: when I use the DD: form of local files
with FTP, FTP ignores overriding attributes on the DD
statement and gets the information elsewhere, often from
the DSCB. Again, it fails to employ BSAM/QSAM where I
believe it should.)

-- gil

Paul Gilmartin

unread,
Dec 20, 2011, 11:49:19 AM12/20/11
to ASSEMBL...@listserv.uga.edu
On Dec 20, 2011, at 09:24, McKown, John wrote:
>>
>> The binder actually supports UNIX files. HLASM uses BPAM.
>> This mess is a
>> result of z/OS's BPAM support of UNIX files.
>
> So, hopefully, some future version of HLASM will directly support UNIX files. The BPAM support for UNIX seems to be a bit "lacking". I say this because BPAM does support using all possible hex values as a member name, excluding 8x'FF'. SMP/E uses really weird member names successfully. And you can even browse or edit them from ISPF. Hum, since the name in the message is UPPER CASED, perhaps this particular "problem" is due to HLASM after all.
>
I'm astonished about 8x'FF'. Won't BLDL see that as end-of-directory
and report Member not Found?

Does SMP/E still do that? I thought it was historical behavior
and SMP/E now uses VSAM.

Can the programmer use weird names in SMP/E MCS/Commands, or are
they only used when generated by SMP/E? I know that the CSECT
option on the ++MOD MCS allows anything except ' ', ',', and ')'.
(IIRC) Itself restrictive because I believe Binder allows the
latter two.

-- gil

Paul Gilmartin

unread,
Dec 20, 2011, 3:53:43 PM12/20/11
to ASSEMBL...@listserv.uga.edu
On 12/20/2011 9:24, McKown, John wrote:
>
> So, hopefully, some future version of HLASM will directly support UNIX files. The BPAM support for UNIX seems to be a bit "lacking". I say this because BPAM does support using all possible hex values as a member name, excluding 8x'FF'. SMP/E uses really weird member names successfully. And you can even browse or edit them from ISPF. Hum, since the name in the message is UPPER CASED, perhaps this particular "problem" is due to HLASM after all.
>
We were just having a discussion hereabouts: we need to upgrade our
OPTABLE to exploit some new instructions. But it's highly likely that
IBM's new OPTABLE will contain some opcodes, whether we use them
or not, that will collide with some of our macro names.

IBM has not nicely partitioned the macro name space, IBM/ISV/end user
to avoid collisions. At one time, there was a rule of thumb that
opcodes were short, and if ISVs and customers used only long macro
names, they were pretty safe. That has fallen by the wayside.

Opportunity knocks. What if IBM were to commit to using only upper
case characters in opcode and macro names, leaving mixed case
names the domain of ISVs and customers.

Didn't I hear that IBM had to arbitrate a collision between one of
its own macro names and one of its own opcodes lately?

-- gil

John Gilmore

unread,
Dec 20, 2011, 5:20:15 PM12/20/11
to ASSEMBL...@listserv.uga.edu
IBM does not yet have any eight-character opcodes. It seems unlikely
that any will be defined soon. Macro definitions that have such
'long' names are therefore unlikely to conflict with opcode mnemonics.

As I suppose most of you know such construction as

|&macname setc 'gubbins' --character value of macro name
| &macname . . .
|

or

|&macnames(1) setc 'MCGUFFIN','MCGOFFIN','GUBBINS'
| . . .
| &macnames(&i) . . . --character value of macro
name

is already supported by the HLASM. The value of a character set
symbol may appear in the operation field where a macro's name usually
appears.

This suggests that without much trouble the assembler could be induced
to support such an idiom as

|&macname setc 'gubbins' --character value of macro name
|&xmacname setc C2X(&macname) --its hexadecimal value using available BIF
| &xmacname . . .

This could be routinized, even encapsulated, readily to make it less tedious.

It is my uninformed guess that it would also be easy to implement
since BPAM would not find it problematic, but John Ehrman or one of
the Perth Laboratory people who monitor this list may see
insurmountable difficulties in doing so.
--
John Gilmore, Ashland, MA 01721 - USA

Robert A. Rosenberg

unread,
Dec 20, 2011, 8:37:17 PM12/20/11
to ASSEMBL...@listserv.uga.edu
At 08:46 -0700 on 12/20/2011, Steve Comstock wrote about Re: HLASM
macros in z/OS UNIX subdirectories.:

>Well, it's a little hokey, and I'm not able to test it right
>now, but what about having a series of 'copy' statements at
>the front of your program that copy in the macro files?

That could work for outer macros (ie: Thus that you call directly)
but would not solve the issue of inner macros (ie: Those your outer
macros call). The inner macros would need to also be in the copy
list. You can do an iterative process where you create the copy
statements, try the assembly, look at the list of missing macros, add
them as copys, and try again until there are no more missing macro
errors. It might be simpler to do a PRINT OFF, COPY statements, and
PRINT ON with one COPY for each macro in your directory. This might
cause the Assembler to choke on all the macros however.

John Ehrman

unread,
Dec 20, 2011, 11:07:06 PM12/20/11
to ASSEMBL...@listserv.uga.edu
The reason HLASM upper-cases macro names is historic: in the early days all
PDS members had upper-case names, and you had to "play games" (such as
doing your own BLDL and STOW) to get anything different.

If you believe mixed-case support is worth pursuing, submit a request
through your local IBM rep.

(I used to have fun creating member names with a blank in the middle, so
that other programs would see only the pre-blank characters.)

John Ehrman

John McKown

unread,
Dec 21, 2011, 6:32:25 PM12/21/11
to ASSEMBL...@listserv.uga.edu
On Tue, 2011-12-20 at 20:07 -0800, John Ehrman wrote:
> The reason HLASM upper-cases macro names is historic: in the early days all
> PDS members had upper-case names, and you had to "play games" (such as
> doing your own BLDL and STOW) to get anything different.
>
> If you believe mixed-case support is worth pursuing, submit a request
> through your local IBM rep.
>
> (I used to have fun creating member names with a blank in the middle, so
> that other programs would see only the pre-blank characters.)
>
> John Ehrman
>

I couldn't convince a person dying of thirst in the desert to take a
drink of water. Try to convince IBM of something like this? No. I will
simply "go with the flow" and use UPPER case via symlinks to the lower
case name.

--
John McKown
Maranatha! <><

Tony Harminc

unread,
Dec 21, 2011, 11:05:21 PM12/21/11
to ASSEMBL...@listserv.uga.edu
On 20 December 2011 15:53, Paul Gilmartin <PaulGB...@aim.com> wrote:

> Didn't I hear that IBM had to arbitrate a collision between one of
> its own macro names and one of its own opcodes lately?

I don't know about lately, but 25 or so years ago they broke use of
the then state-of-the-art ASMH on VM/SP by adding a TRACE instruction
to the XA architecture, when VM already had a widely used TRACE macro.
IBM's response to complaints was to point out that Asm XF was the only
supported assembler for building VM, and reject the APAR.

Tony H.

Bob Fake

unread,
Dec 22, 2011, 12:09:03 AM12/22/11
to ASSEMBL...@listserv.uga.edu
Thank you for contacting InfoSec. I will be out of the office with limited access to email and voice mail beginning Wednesday December 21, 2011, returning on Tuesday January 3, 2012. If this is urgent, please call 703-825-1202 and I will return your call as soon as I am able.

Thank you again for contacting InfoSec and have a Merry Christmas, Happy Holiday and best wishes for a great 2012.

Bob Fake
703-825-1202
www.infosecinc.com

Paul Gilmartin

unread,
Dec 22, 2011, 10:08:19 AM12/22/11
to ASSEMBL...@listserv.uga.edu
On Dec 20, 2011, at 08:29, McKown, John wrote:

> Just for learning, and fun (FSVO "fun"), I'm doing some programming in HLASM for z/OS UNIX. In the spirit of things, I'm keeping the source in UNIX subdirectories and using the "make" UNIX command, in an interactive UNIX shell, to control the assembly (using the "as" UNIX command) and linking (using the "ld" UNIX command).
>

An off-list discussion has prompted a question: How does BPAM
implement NOTE and POINT for UNIX files? If we create copybook
members with vi, emacs, nedit, jedit, ... and allocate SYSLIB
with FILEDATA=TEXT,RECFM=FB,LRECL=80,PATH=..., the (emulated)
BPAM will pad lines with 0x40 to 80 byte records. Then a nested
COPY causes a NOTE; copies in the nested member and POINTs back
to the previous position. I'd expect POINT to use fseek()
internally. But how does it calculate the fseek() argument,
not knowing how many padding bytes were added previously?
Or does BPAM keep a journal?

Years ago I had a PMR on failure of this operation. IBM fixed
it. I have no idea how.

John and I would never tolerate being required to pad lines in
all our UNIX files to 79 characters plus <NL>.

-- gil

McKown, John

unread,
Dec 22, 2011, 10:13:21 AM12/22/11
to ASSEMBL...@listserv.uga.edu
> -----Original Message-----
> From: IBM Mainframe Assembler List
> [mailto:ASSEMBL...@LISTSERV.UGA.EDU] On Behalf Of Paul Gilmartin
> Sent: Thursday, December 22, 2011 9:08 AM
> To: ASSEMBL...@LISTSERV.UGA.EDU
> Subject: Re: HLASM macros in z/OS UNIX subdirectories.
>
> On Dec 20, 2011, at 08:29, McKown, John wrote:
>
<snip>

> An off-list discussion has prompted a question: How does BPAM
> implement NOTE and POINT for UNIX files? If we create copybook
> members with vi, emacs, nedit, jedit, ... and allocate SYSLIB
> with FILEDATA=TEXT,RECFM=FB,LRECL=80,PATH=..., the (emulated)
> BPAM will pad lines with 0x40 to 80 byte records. Then a nested
> COPY causes a NOTE; copies in the nested member and POINTs back
> to the previous position. I'd expect POINT to use fseek()
> internally. But how does it calculate the fseek() argument,
> not knowing how many padding bytes were added previously?
> Or does BPAM keep a journal?
>
> Years ago I had a PMR on failure of this operation. IBM fixed
> it. I have no idea how.
>
> John and I would never tolerate being required to pad lines in
> all our UNIX files to 79 characters plus <NL>.
>
> -- gil

Why wouldn't it just use ftell() to record the actual position in the UNIX file, independant of its reformatting of the data placed into the user's buffer? Then fseek() back to that.

Paul Gilmartin

unread,
Dec 22, 2011, 10:30:03 AM12/22/11
to ASSEMBL...@listserv.uga.edu
On Dec 22, 2011, at 08:13, McKown, John wrote:
> <snip>
>> An off-list discussion has prompted a question: How does BPAM
>> implement NOTE and POINT for UNIX files? If we create copybook
>> members with vi, emacs, nedit, jedit, ... and allocate SYSLIB
>> with FILEDATA=TEXT,RECFM=FB,LRECL=80,PATH=..., the (emulated)
>> BPAM will pad lines with 0x40 to 80 byte records. Then a nested
>> COPY causes a NOTE; copies in the nested member and POINTs back
>> to the previous position. I'd expect POINT to use fseek()
>> internally. But how does it calculate the fseek() argument,
>> not knowing how many padding bytes were added previously?
>> Or does BPAM keep a journal?
>
> Why wouldn't it just use ftell() to record the actual position in the UNIX file, independant of its reformatting of the data placed into the user's buffer? Then fseek() back to that.
>
The token returned by NOTE for a legacy PDS contains:

o the catenand number

o TTR within the catenand, which serves to identify both
the member and the block.

For a UNIX directory, it would need to identify:

o the catenand number

o the member within the directory

o the relative byte address within that member.

Is a NOTE token sufficiently large to contain all
this information? Particularly given that a concurrent
process may be adding or deleting members from the same
directory.

-- gil

Reply all
Reply to author
Forward
0 new messages