Oppolzer - Informatik / Blog


Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie

Hercules - Aufruf eines externen Unterprogramms in PL/1

Subject:

Re: [H390-VM] Re: PL/I Main Program calling an External Subroutine

From:

Bernd Oppolzer <bernd.oppolzer@T-ONLINE.DE>

Reply-To:

Date:

2013.03.22 12:32:00


Maybe I should put my question more precise:

I know about the differences between the PL/1 resident library (runtime objects,
that are linked to the compiler generated object) and the transient library
(runtime objects, that are loaded at runtime - I guess that this is done by MVS
LOAD).

Now what I don't understand:

I thought that the TXTLIBs are for static linkage and that all statically linked
objects are added at LOAD ... GENMOD time and will be part of the generated
module. And, if there are dynamically loaded objects, I thought that they have
to be specified using a GLOBAL LOADLIB statement.

And: since there is no LOADLIB for PL/1, I thought that all runtime objects in
this (old) version of PL/1 are static objects. So I don't understand why a
TXTLIB is needed at runtime.

So I must have get some things wrong ...

Could anyone with some knowledge of CMS and MVS help me to understand things
better?

Many thanks, kind regards

Bernd



Am 22.03.2013 12:16, schrieb Bernd Oppolzer:
>
>
> Ok, sorry, here we go:
>
> driver
> THE FOLLOWING NAMES ARE UNDEFINED:
>  IHECLTB
> IHE012I  U    &Â ABENDED IN STMT 00008 AT OFFSET 000B6E FROM ENTRY POINT
>  DRIVER WITH CC 15A (SYSTEM)
> DMSABN148T SYSTEM ABEND 15A CALLED FROM 7F5502.
> CMS
> global txtlib plilib
> Ready; T=0.01/0.03 13:11:06
> driver
> Ready; T=0.01/0.03 13:11:10
> filedef sysprint term
> Ready; T=0.01/0.01 13:11:21
> driver
>
>
>        5                       6                      11
> Ready; T=0.01/0.03 13:11:22
>
>
> the first driver call is immediately after LOGON, and it ABENDs with SYSTEM 15A.
>
> the second one works well (after GLOBAL TXTLIB PLILIB), but since there is no FILEDEF for
> SYSPRINT, the output goes to a disk file.
>
> the third one shows the output on the terminal.
>
> My opinion was that the generated module (like a load module in MVS) contains all the
> code needed to run the application. But this seems not to be the case; the module needs
> the GLOBAL TXTLIB anyway, and the PL/1 runtime objects are fetched from there at
> runtime, is this true? Or: does the MVS / CMS analogy not apply?
>
> Kind regards
>
> Bernd
>
>
>
> Am 22.03.2013 11:47, schrieb P.C.:
>>
>>
>> >
>> > there is another problem I observed yesterday with those PL/1 programs.
>> >
>> > I generate a module using LOAD ... GENMOD.
>> >
>> > This runs well, as I pointed out.
>> >
>> > But, when I log off from my CMS session and log on again later, I get
>> > strange ABENDs,
>> > when I try to run the generated module again. It only runs after I did
>> > another PL/1 compile,
>> > of maybe the GLOBAL TXTLIB PLILIB. There are some prerequisite which I
>> > didn't analyze
>> > so far.
>> >
>> > I know similar behaviour from the Stanford PASCAL compiler, which I
>> > improved and
>> > extended last year. This is why I do not generate modules regularly, but
>> > instead rely
>> > on LOAD ... START.
>> >
>> > When I worked with VM/SP in the 90s, we never had such problems.
>> >
>> > What is the difference here?
>> >
>>
>> Maybe you had GLOBAL TXTLIB PLILIB in your PROFILE EXEC or SYSPROF EXEC when
>> you used VM/SP?
>>
>> It's hard to speculate further without knowing what kind of strange ABENDs you
>> are getting.
>>
>> Regards,
>> P.C.
>

Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie