None of the inst5ructions mentioned have their lengths determined at compile
time. If I do an EX of a CLC, it remains a CLC.
How does a string stop being a string if I remove the VARYING keyword?
Shmuel (Seymour J.) Metz
From: IBM Mainframe Assembler List <ASSEMBLER-LIST@listserv.uga.edu> on behalf
of Bernd Oppolzer <bernd.oppol...@t-online.de>
Sent: Thursday, February 8, 2018 4:02 PM
Subject: Re: Fair comparison C vs HLASM
All the instructions mentioned below have their lengths determined at
time. String instructions (and strings in the sense of this thread) are
with lengths varying at run time. This can be done on the mainframe
or MVCL, CLCL etc ... but not with the instructions mentioned below.
In my post, I really meant instructions to support null-terminated strings
at a hardware level, which were introduced into z-Arch a long time AFTER the
first commercially available C compiler (C/370) was introduced by IBM and
widely used by customers. I worked with C/370 on the mainframe starting
in the early 1990s, and the string instructions in z/Arch came about 10
later, IIRC. I may be wrong with the years, but the 10 years delay
Am 08.02.2018 um 21:14 schrieb Seymour J Metz:
> WTF? How are CLC, MVC, TR and TRT not string instructions? Or do you only
> consider it to be a string if it conforms to the abominable C use of 0 as a
> string delimiter?
> Shmuel (Seymour J.) Metz
> From: IBM Mainframe Assembler List <ASSEMBLER-LIST@listserv.uga.edu> on
> behalf of Paul Raulerson <paul.rauler...@me.com>
> Sent: Monday, February 5, 2018 10:53 PM
> To: ASSEMBLER-LIST@listserv.uga.edu
> Subject: Re: Fair comparison C vs HLASM
>> On Feb 5, 2018, at 7:29 PM, Robin Vowels <robi...@dodo.com.au> wrote:
>> From: "Bernd Oppolzer" <bernd.oppol...@t-online.de>
>> Sent: Tuesday, February 06, 2018 1:23 AM
>>> Am 05.02.2018 um 14:42 schrieb Gord Tomlin:
>>> And, BTW, the historic facts are simply wrong:
>>> IBM had a C compiler for MVS (and VM, I believe) long before there were
>>> string instructions on z/Arch.
>> MVC, CLC, MVCL, CLCL, MVO, MVN, ED, EDMK, TR, TRT
>> are all string instructions. Most of these were available in 1965 with the
>> S/360. Long before C.
> Oh my - but no. These are >character< operators, not string operators. Much
> more akin to C’s memcpy() than anything else. (Yes, memcpy() was built, in
> part, to emulate them.)
> CLST, CUSE, MVST, SRTST, and the later generations of these and other
> instructions work on strings. Albeit, I think the definition of “string” in
> this case is a little dodgy.
> I must say, it is a lot of fun to read some of these postings. I don’t
> necessarily agree with a lot of them, but they are fun to read.
> z/OS as the epitome of a portable OS? HLASM more portable that C? Does
> anyone really buy into that? I assumed it was a just leg pulling… :)