The test runs were on a z196 with current z/OS release.
I didn't do the tests myself, only was told about the results,
but the co-worker normally is very reliable.
Regards
Bernd
Am 24.05.2012 12:54, schrieb Shmuel Metz (Seymour J.):
In4fbd69b6.5080...@t-online.de, on 05/24/2012
at
Update to this CALL PLIMOVE generates loop of MVCs topic:
we did some further research and found out, that for CALL PLIMOVE with
known length at compile time, even with EP PL/1 V3.9, there is a code
sequence generated which uses MVCL, if the length is greater or equal
16384. For lengths below
that the compiler generates the best available machine instruction
for this HLL instruction.
Kind regards
Bernd
Am Mittwoch, 16. Mai 2012 21:41 schrieb Bernd Oppolzer:
First, I would like to thank you for starting this thread.
I posted it to the performance people of my customer, and they told me
First, I would like to thank you for starting this thread.
I posted it to the performance people of my customer, and they told me, that
they just found a similar problem with EP PL/1 3.9, that is: the PLIMOVE
calls
don't generate MVCLs any more, as in previous releases, but series of MVCs
and
Maybe you could write a function that reads the control blocks of the
z/OS storage management queues and computes the overall size of the
used storage blocks, per subpool?
If you call this function somewhere in a loop in your main program,
you could discover if one of your subroutines allocates
We have some experience here regarding developing portable
C applications targetting z/OS mainframes (which should be little or
no difference to z/VM and z/Linux) and Solaris on Sparc.
Our experience is: the Sparc hardware is more critical than the z hardware,
for example, a pointer to int or
with
successive reads are its successive directory blocks.
I have done this many times without incident, but I do not of course
recommend it to novices.
I have not myself done it in C; but Bernd Oppolzer is a careful,
highly reliable reporter of his experience; and I am thus sure that it
can be done
Don't know what it's worth, but I'm quite sure that you can read a directory
of a PDS simply by issuing fopen on it as a binary file - like this
directory = fopen (dd:pdsfile, rb);
that is, if you don't specify member names in parantheses, you get the
directory of the PDS.
And, yes, if you
The possible solutions are not limited to the COBOL XML PARSER; you can
use ANY XML parser
that supports DOM. We have our own parser which is written in ANSI C and
runs on every platform
including z/OS and is very small and faster than the very general
products from IBM and elsewhere
like, for
Why? I don't understand this comment, because JCL parm is always only
one parm;
no variable length address list ... what do I get wrong? Well, the JCL
parm itself has
variable length, but the length of the address list is fixed, always
one. And: I dont know
if the system sets the high order bit
I understand your motivation to do this;
our site specific CALL macro also sets the high order bit on every
parameter address list (even fixed length), although nobody checks it;
it's merely for dump reading purposes.
But: if you recall the posting of the ATTACH macro description,
you are (and
It's true: when passing 64 bit addresses, the VL bit mechanism will
not work any more, so maybe it has no future.
The C stdarg mechanism has its drawbacks, but it does not rely on
a specific platform or operating system, it is portable, and it works
with 64 bit environments, too. This is what I
We have a home grown XML generator tool, which
is controlled by something which we call interface description.
This interface description can be derived from XML schema definitions
and is translated by a special translator to PL/1 or C include files
(containing structure definitions containing
I don't know if it helps you, but using C I would code the two calls
this way:
rc = THEFUNCTION (magic, inputbuffer,inputlength, NULL, NULL);
rc = THEFUNCTION (magic, inputbuffer,inputlength, outputbuffer,outputlength);
Note that the parameters that are probably integers are prefixed with
Sorry, the ! should be a |
bitwise or operator in C
I mixed up bitwise or in C with logical or in PL/1
Kind regards
Bernd
Original-Nachricht
Betreff:Re: PL/I with variable PLISTs (was: LE C calling HLASM)
Datum: Tue, 10 Apr 2012 23:23:39 +0200
Von:Bernd
, it is a C program, returning an int (the retcode).
Kind regards
Bernd
Original-Nachricht
Betreff:Fwd: Re: PL/I with variable PLISTs (was: LE C calling HLASM)
Datum: Tue, 10 Apr 2012 23:26:51 +0200
Von:Bernd Oppolzer bernd.oppol...@t-online.de
Antwort an: IBM
generated by central repository, so that there are
no different alignment considerations from the three languages (and all
structure components match)
Kind regards
Bernd
Am 10.04.2012 23:31, schrieb Phil Smith:
Bernd Oppolzer wrote:
I don't know if it helps you, but using C I would code the two
Pure speculation on my part:
There are some systems or software components that require that on all calls
(even when the number of parameters is fixed) the last parameter address has
the high order bit set. I recall GDDM, where this was the case.
When I wanted to call GDDM routines from
I would not blame PL/1 for this.
It is not OK IMHO to request the caller to set the
high order bit on the last parameter, when the number of the parameters
is fixed
(see also my GDDM example on the other post). This is not required by
any OS convention,
at least that's my understanding.
Kind
- they are comfortable sometimes, like with
printf etc, but you can live without them.
Kind regards
Bernd
Am 11.04.2012 01:07, schrieb Paul Gilmartin:
On Wed, 11 Apr 2012 00:48:33 +0200, Bernd Oppolzer wrote:
I would not blame PL/1 for this.
It is not OK IMHO to request the caller to set
How do you do this at runtime in a fast way?
I would first walk up the save area, get the entry point address of the
caller and look if there is the LE signature at position 4 (X'01' followed
by 'CEE'), so I know that is is a PL/1 or C compiler (maybe COBOL, too,
I'm not sure about this). Then I
Maybe my misunderstanding is:
I'm assuming that I am called dynamically and not linked to the caller
(because at our site, we have ONLY dynamic calls).
Kind regards
Bernd
Am 07.04.2012 09:40, schrieb Bernd Oppolzer:
How do you do this at runtime in a fast way?
I would first walk up
My experience with macro assembler is some ten years ago,
but: finding the number of parameters in the list and indexing across the
list is IMHO only possible for positional parameters, but here we have
keyword parameters.
positional:
LABEL MACNAME A,B,C
keyword:
LABEL MACNAME P1=A,P2=B,P3=C
Thank you very much, I'll take a look at all that.
Kind regards
Bernd
Am 30.03.2012 19:55, schrieb Steve Comstock:
On 3/30/2012 9:15 AM, Bernd Oppolzer wrote:
Am 30.03.2012 14:45, schrieb Steve Comstock:
My notes seem to indicate that using LINK from Assembler to
a PL/I main creates
Furthermore, you can call non-LE programs from LE programs and later
call LE programs from these non-LE programs, if you do the following:
- propagate R12 to the lower LE program
- take care of the values in the locations after offset 72 in the
savearea (NAB etc.);
if you pass these values
Bernd
Am 31.03.2012 14:39, schrieb Steve Comstock:
[top posting]
Yikes! And I thought Colorado was the wild, wooly west. But n!
You win.
On 3/31/2012 5:45 AM, Bernd Oppolzer wrote:
Furthermore, you can call non-LE programs from LE programs and later
call LE programs from these non-LE
is the preferred way for an LE enclave to call or
build another
LE enclave?
Kind regards
Bernd
Am 29.03.2012 23:28, schrieb Steve Comstock:
On 3/29/2012 3:11 PM, Bernd Oppolzer wrote:
Ok, thank you, you gave me something to think about.
Maybe I should try to call the mains in a different way.
Now my co
Am 30.03.2012 14:45, schrieb Steve Comstock:
My notes seem to indicate that using LINK from Assembler to
a PL/I main creates a nested enclave, which I guess is what
you are seeing. I don't see anyway to call a PL/I main without
the main creating an enclave.
I also see this note:
PL/I
Ok, thank you, you gave me something to think about.
Maybe I should try to call the mains in a different way.
Now my co-worker is off for holidays for three weeks,
I will try to run some tests myself. I'll keep you informed.
The mains are in fact compiled with RENT and DLL options and linked as
back to the testcase database (to verify
the changes done by the test object and to enable regression testing).
Kind regards
Bernd
Am Mittwoch, 28. März 2012 03:02 schrieben Sie:
In 4f71e7c6.7080...@t-online.de, on 03/27/2012
at 06:16 PM, Bernd Oppolzer bernd.oppol...@t-online.de said
Hello all,
we have a problem that is not easy to describe. Let me try it.
We are building a test supporting system, which allows to do tests of
software
components. The system consists of the following modules or parts:
A - driver, written in ASSEMBLER. The driver builds a LE enclave, so
I'm not really an expert on this topic. We're an IMS shop, but all the
IMS topics
are hidden behind a site specific application framework, so that most of
IMS is
not visible to the applications. In my earlier life, I worked at a
company, which used
CICS on VSE. So my impression is:
- CICS is
Fred Brooks' Law: Adding manpower to a late software project makes it
later.
already 1960s, IIRC
Kind regards
Bernd
Am 13.02.2012 08:24, schrieb Edward Jaffe:
On 2/12/2012 11:41 AM, Chris Craddock wrote:
The (evidently popular) idea that you can pick a random group of
(cheap) gunslingers
There is a C370-List, too, but it is very quiet - almost no traffic the
last months or years.
If you want, you can try to discuss some topics with me offline - I'm
not sure, if I can help
you, but we can give it a try. My english needs yet to be improved ...
Kind regards
Bernd
Am
In the company I am working for, XML is more and more used for every
kind of
interface. For example if you have a system that is capable to get its
input from
outside (like commands to be executed), it is very likely that we will
design the
system so that it will get its commands or inputs in
We replaced the DSNHLI entries provided by IBM by a homegrown CSECT
(with ALIAS DSNHLI) which does the following:
- check if connection is already established by examining a statically
stored address
(which was initialized to zero)
- if not zero, this is the address of the IBM interface, call
We are a big insurance company in Germany, and we do PL/1 until today.
We also do ASM and C, but no COBOL - never.
I heard some years ago that only about 5 % of the mainframe programs are
PL/1,
compared to 80 % COBOL. Don't know, if the numbers are correct. Most PL/1
users are in southern
Sorry, I forgot: many PL/1 users in Switzerland, too.
Kind regards
Bernd
Am 18.01.2012 00:53, schrieb Bernd Oppolzer:
We are a big insurance company in Germany, and we do PL/1 until today.
We also do ASM and C, but no COBOL - never.
I heard some years ago that only about 5
Normally, there is no problem in running even very old C modules on
newer versions of the OS. We did this for years.
Another thing is, if you have changes in MQ, for example - that is, if you
try to run your C programs on a new release of MQ - that may or may not
work.
In this case, we
For our system, we have the need to create UUIDs, which contain in the
right part a twelve
byte hex number which identifies the machine uniquely world-wide (at
least, that's the idea).
The left part is a (kind of) inverted timestamp.
We do this using some information from CSRSI and the LPAR
Same in Germany, all are called Klammer,
() - Klammer (runde Klammer only, if they need to be distinguished from
the others)
[] - eckige Klammer (square)
{} - geschweifte Klammer (curly)
- spitze Klammer
The word parenthese is seldom used.
Regards
Bernd
Am 22.11.2011 09:26, schrieb
I never knew how to call this sign correctly:
in Germany, it's simply called: und (that's: and)
or Kaufmanns und, that is, merchant's and.
Almost nobody here knows what an ampersand is.
But some day one of my co-workers called it Brezel -
you know, what a brezel is? Look here:
Cool, the newer versions of PL/1 support this, too,
when using the BYVALUE keyword on the ENTRY declarations:
DCL CFUNC ENTRY
(BIN FIXED (31) BYVALUE,
BIN FLOAT (53) BYVALUE,
POINTER BYVALUE)
RETURNS (BIN FIXED(31));
and then:
DCL X BIN FIXED (31);
DCL Y BIN FLOAT (53);
DCL P POINTER INIT
When calling C routines from other languages like COBOL or PL/1 (or
FORTRAN),
you have to take into account that in C the parameters are passed by
value, whereas
the other languages pass them by reference, that is, addresses of the
variables.
The solution is simple: to construct your C
Hello all,
following this discussion yesterday, I tried to play a little bit with
Hercules for the first time.
I followed one of the links below and succeeded so far with installing
Hercules and a
VM/370 R6 installation which does IPL, and I have some X3270 sessions to
connect to VM.
I did
I would like to thank you all. I fixed the problem with the PL/1-F
compiler on VM/370 R6
on Hercules, it works now. Also the Stanford Pascal Compiler, which
generates PCODE370
as intermediate code, then 370 code. And ASSEMBLER and FORTRAN, of course.
There are some other languages, which I have
no information about the compile options used to build
the openssl package.
When I changed my main function to RENT, everything ran fine.
Kind regards
Bernd
Am 29.06.2011 15:11, schrieb Bernd Oppolzer:
Dear colleagues,
I have to call the openssl package on z/OS to do some encryption work.
Now I built
I'm still fighting with the OPENSSL package. It works for me,
if I'm calling it from my C main program, but it would be nicer, if
I could call the functions from PL/1. But I have only a XPLINK version
of the OPENSSL libraries which someone else built for me, and no
sources available.
So I first
Thank you very much, this was really helpful !
With XPLINK(ON) specified as a LE runtime parameter it worked.
Kind regards
Bernd
Am 30.06.2011 19:33, schrieb Denis Gäbler:
The caller PL/I does not neccessarily have to be an XPLINK program, but you
will require an LE enclave with
Dear colleagues,
I have to call the openssl package on z/OS to do some encryption work.
Now I built a C main function to call a routine which did run successfully
at another site. Because the openssl library uses XPLINK linkage, we
decided to do so, too. But when I first call a function from the
04.06.2011 03:40, schrieb David Crayford:
On 3/06/2011 9:20 PM, Bernd Oppolzer wrote:
Hello David,
yes, we are using EDCXSTRL. But anyway:
iconv is part of the RTL runtime package, this is a large module
called CEESG003. Part of this module is the RTL malloc routine, too.
The references between
yes, I guess, I have to do something like that;
don't use iconv() any more and do the conversion some other way.
We have also sourcecode examples of some other exits available,
where code conversions are done by using inline tables; maybe
we can copy some code from there.
Thank you, kind regards
that you are using EDCXSTRL and not EDCXSTRT?
On 2/06/2011 3:22 PM, Bernd Oppolzer wrote:
Hello,
we have the following problem:
we recently got the responsibility for the site-specific MQS exits.
These MQS exits
are written using SPC (System Programming C). This is recommended by MQS
Hello,
we have the following problem:
we recently got the responsibility for the site-specific MQS exits.
These MQS exits
are written using SPC (System Programming C). This is recommended by MQS,
or maybe it is a restriction of the MQS environment.
We link the exit with the SCEESPC lib and
Hello,
we (suddenly) feel the need to give our large insurance math package,
which is written in C, to a fellow company, so that they can use it, too.
The problem is: the math package needs to do fopen to get access to
some large (kind of) database files, where it gets its calculation base
To solve the problem finally, you will have some DB2 expert to
examine the SQLs that the remote users are sending. Because
very often the people outside send the SQL through end user tools,
they are not well trained and could do much better. This will cost some
money at the start, but in the long
big grin :-)
I do: download files to Win or OS/2 using FTP oder RECEIVE,
then KEDIT the file (big applause to Mansfield Group)
then insert a special char at the split points, e.g. %
then
set hex on
change /%/x'0d0a'/* *
then save the file and reopen (or upload to z/OS).
Same technique for
--- cross posted to the PL/1 mailing list ---
Thank you for your answer. I will take a look at the 3.9 documentation.
We are using 3.6 and 3.7, planning to migrate to 3.9 this year.
I've read the LE programming guide of z/OS 1.10, and from there I took
the information that COBOL and PL/1 are
Thank you very much, it worked!
Now the remaining problem is: I had to compile my module
with XPLINK and LONGNAME, and I had to link it to a PDSE,
because without XPLINK, the references to the functions in
the library don't get resolved; same is true, if I don't use
LONGNAME, and LONGNAME needs
Is it possible to link code directly from z/OS Unix
archive files?
I tried it this way:
//LKED EXEC PROC=WCIEWL,
// AMODE=31,RMODE=ANY,REUS=RENT,
// SYSLMOD='ADPSAE.LEHR.GRP20.LOAD',
// SYSOUT=A,
// SYSLIN='TEMPDSN'
//SYSINDD *
INCLUDE
Hello all,
I need to compile a ANSI C program on the mainframe,
which does calls to the OPENSSL library. The OPENSSL library
is located in the z/OS Unix filesystem, and the header files for the
compile, too.
I've not much experience with z/OS Unix. Our compile jobs deal with
classical MVS
Hello IBM-Main,
can I split a PARM on the EXEC statement, which is too long,
in two parts (on two lines), without having a comma inserted?
Thanks, regards
Bernd
--
For IBM-MAIN subscribe / signoff / archive access
Thanks! worked!
Kind regards
Bernd
Steve Comstock schrieb:
Bernd Oppolzer wrote:
Hello IBM-Main,
can I split a PARM on the EXEC statement, which is too long,
in two parts (on two lines), without having a comma inserted?
Thanks, regards
Bernd
Yes. For example:
//STEPPER EXEC PGM
with the tapes,
and IBM and Telefunken employees brought and fetched the tapes from the
train stations.
This was done several times during the bootstrapping process.
Old stories ...
Kind regards
Bernd
David Crayford schrieb:
Bernd Oppolzer wrote:
john gilmore schrieb:
declare (pi value
john gilmore schrieb:
declare (pi value(3.14159_26535_89793_23846),
sqrt_pi value(sqrt(pi)) binary float(52) ;
What I find most interesting in this example:
will the sqrt(pi) function call be evaluated at compile time?
I hope so.
What I expect from an optimizing compiler, is, at
I recently heard a rumour at our site about IBM not recommending
the use of java with DB2 on the mainframe due to problems with
open DB2 cursors across java subprograms. It was reported to be a problem
of the IBM mainframe java implementation, and IBM seems to be working on
it.
I don't quite
Hello Dave,
thank you for your answers.
Yes, the reason for my confusion was twofold:
first, the documentation of IBM, which states that the remaining components
of partially initialized automatic structures are not initialized, which
is not
conforming to the ANSI standard and is not what
.
Bernd Oppolzer wrote:
Sorry for the missing line feeds.
C statement:
*scp1215ein in1215 = { 0 };
Pseudo ASSEMBLER (structure starts at 272(r13)):
STr6,a5:d272:l4(,r13,272)
MVI a5:d276:l1(r13,276),0
C statement:
*scp1215aus
Hello David,
which version of the compiler did generate the MVC instructions?
was this with or without the INITAUTO option?
We use the z/OS v1.6 version, and this version only generates the MVI,
not the MVCs.
We will not use INITAUTO due to serious performance degradation.
At the moment,
Hello David and all others,
I have to apologize.
The MVC instructions which initialize the rest of the structure come
very late,
some 40 instructions later, after the function prologue, so I didn't
realize them.
But in fact, you are right, David, they are there, and the structure is
Hello all,
sorry for asking this question on IBM-Main, but the C370 list is so silent
that I doubt that anyone is actually listening.
We observed a sort of problem today which showed up as a 0C4 abend
due to a not proper initialized pointer component of a C structure.
Further examination
the rest of the structure to zero. But such a
instruction is not generated by the compiler.
???
Kind regards
Bernd
Bernd Oppolzer schrieb:
Hello all,
sorry for asking this question on IBM-Main, but the C370 list is so
silent
that I doubt that anyone is actually listening.
We observed a sort
at 296(r13)):
STr6,a5:d296:l4(,r13,296)
MVI a5:d300:l1(r13,300),0
Kind regards
Bernd
Bernd Oppolzer schrieb:
To make it clear:
see above
The ST operations initialize the first components of the structures,
which are fullwords. This is what should be done, according to
the IBM C
of these 2000 C
programs :-)
(and many of these have gone through other hands through the past 15
years).
Kind regards
Bernd
McKown, John schrieb:
-Original Message-
From: IBM Mainframe Discussion List
[mailto:ibm-m...@bama.ua.edu] On Behalf Of Bernd Oppolzer
Sent: Tuesday, May 18
Yes, with respect to the IBM description, it works correct.
But the IBM description is wrong with respect to the ANSI C definition.
I also checked the language references of some other compilers,
that is, SGI or Microsoft. In all other cases, the remaining structure
components
are initialized
The problem is, IMHO, that the file is stored on Windows
with LF delimiters. This is probably not due to a previous FTP transfer
from Unix to Windows, but some other way. The file exists and cannot be
changed.
Now the question is, how to transfer it to z/OS?
I don't believe that the Windows FTP
sorry all,
should have read all the other posts.
if FTPing such a file with LF using text transfer,
the 0x0a will probably not trigger a new line on the z/OS
dataset, correct?
so the single 0x0a does not mean new line to the windows FTP client,
and several lines of windows are combined into
Hello all,
I have two machines with OS/2 V 3 still running, and it is not called WARP,
but there was a version V3 already called WARP, too, AFAIK. (The machines
are from 1997 and 1999, by the way, and they still have the original IBM
SCSI
drives, no problems so far).
The blue screen is not
Thanks for the comments so far.
1. yes, the loop is looking for the same module every time.
2. yes, it is called VERY often. And yes, there are many modules in the
LLE list (hundreds to thousands; this is a production IMS region with
virtually all the modules we have).
3. the loop is very
Dear Colleagues,
I have the following problem:
a piece of software that I'm not allowed to change due to legal reasons
walks through the LLE list to look for a specific module. And it does this
very often. I cannot change this behaviour. This consumes 5 percent of CPU
of some of our production
If a subtask issues a LOAD macro for the same module that has already
been loaded by the mother task (RENT, REUS), will there be an entry
in the subtasks LLE list for this module or not? I'm kind of sure that the
module will be reused, but I'm not sure about the entry in the LLE list.
Can someone
We did this, too, in our site-specific standard start-and-end-macro.
So odd addresses in the RET field in the save areas show that the active
save area is above this position (in forward direction). But this is
kind of
redundant, if you have reg 13. But sometimes, when debugging, you are
happy
No. Most compiled languages, including PL/1, don't do forward chaining.
We did it by ourselves for years to make the SYSUDUMPs more readable.
But in the end we gave up and wrote our own dump routine which follows the
back chain starting from reg 13. In the LE manuals it is explicitly
stated
A similar topic:
entry points in SYSUDUMPs Save Area Trace can have a message attached,
containing, for example, function names, compile dates etc.,
if the machine codes at the entry are coded in the right way.
That is, Branch, one byte length field, the message.
Our home grown start macro
it would be better to ask at DB2-L,
but the answer is something like
SELECT ...
FROM CUSTOMER_ORDER
WHERE TS_COLUMN = CURRENT TIMESTAMP - 2 YEARS;
Specify the columns you want in the result in the select list (replacing
the three dots),
the correct table name and qualifier after FROM
and the
Cool. Interesting, that I did not find this obvious work-around by myself.
Maybe my brain refuses to take such ways of correcting one error by
inserting another into account.
Happy new year 200A to you all :-)
Robert A. Rosenberg schrieb:
At 23:34 +0100 on 01/08/2010, Bernd Oppolzer wrote
This is true. 30 million cards have the chip with the logic error on it.
It seems as if the BCD representation of the year 2010 is unterstood
by the card logic as 2016, and so the card is treated as not valid any
more,
but this is only a wild guess.
The repair steps discussed are the
as 2016?
Thanks!
Don
On Fri, Jan 8, 2010 at 5:00 AM, Bernd Oppolzer
bernd.oppol...@t-online.dewrote:
This is true. 30 million cards have the chip with the logic error on it.
It seems as if the BCD representation of the year 2010 is unterstood
by the card logic as 2016, and so the card
IMHO, this sounds far too optimistic. First, not all machines and POS
terminals have been
reconfigured, only most of. And this can be done, AFAIK, only inside
Germany, but
due to legal issues, not in other european countries, and german people,
passing their
holidays there at the moment (skiing
the work around is: don't use the chip - use the magnetic stripe instead !
John P. Baker schrieb:
Gil,
Personally, I think that any work around is absurd.
Somebody really screwed up, and a lot of people are being inconvenienced.
What I am afraid of is exactly the kind of scenario you
My guess at the moment, too, is, that the ATM tells the chip on the card
the current
date in BCD, and the card interprets it as 2016 and returns an error
code expired
to the ATM.
But recent news sound as if the truth is more complicated. The
communication between
the EMV chip and the ATM
The german mainframe Telefunken TR 440 had a command language in 1970
already,
which was the same for batch and dialog. No need to learn different
languages like
JCL and TSO command languages, and you could do all the things you can
do with
the JCL of today, even more (define your own
If it helps:
you can open a PDS or PDSE without a member name using fopen ()
in binary mode and read the directory. After having read the member names,
you can fopen the individual members, if you want.
Kind regards
Bernd
David Stephens schrieb:
There's no doubt that z/OS specific functions
I would like to second that.
With some of the new MS compilers, you have to define a symbol
_CRT_SECURE_NO_DEPRECATE; if not, you get warning messages
on every call of strcpy, sprintf and so on.
While I agree that the NULL terminated strings and the C string library
are a bad idea from the
IMHO, if thinking about development on workstations, you should first
split your application in two pieces:
one piece (batch driver), which does the reading and writing of the 4GB+
datasets,
and presents the data on a record base to the
second piece, which does all the calculations and
Thank you all for your contributions.
First, this was posted on IBM-MAIN erroneously. It was only meant to
appear on the ASSEMBLER List. But thank you for your feedback anyway,
it was of great help.
Second, the subsystems do some significant work, for example, fast
communication
between IMS
Dear listers,
at my customer's site there are some user-written MVS subsystems,
written in the 80s and 90s. They seem to be very important and are
in production use every day. Now I was asked to take responsibility
for them, because the guy who wrote them will be retired soon.
I started
Hello Frank,
maybe this is all correct, but I'd like to throw your
attention to one very important fact:
the different DSNHLIs are not at all the same. So if you
want to build - as we did at our site - a kind of general
interface, which works in all environments, you have to
rename all the
fopen (testlib, r) -- looks for file userid.testlib - TSO logic
fopen (\'testlib\', r) -- looks for file testlib - MVS dataset
fopen (dd:testlib, r) -- looks for dd-name
there are additional filename conventions for HFS files
This is how C (or LE) runtime works.
kind regards
Bernd
Michael
I'm very interested to see how this discussion will proceed.
Maybe someone of IBM wants to participate.
By similar issues we ended up with the following solution:
we wrote an LE exit, which we tried to activate in all environments,
that is, batch, TSO and IMS, in our case. Programming languages
1 - 100 of 135 matches
Mail list logo