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 11:07:00


BTW:

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?

Thank you, regards

Bernd



Am 22.03.2013 10:35, schrieb Bernd Oppolzer:
>
>
> Hello together,
>
> I too have PL/1 (F) installed on VM 6.2 (or what is the version number of the
> VM sixpack installation).
>
> The difference is that I call the PL/1 compiler thru a PLICOMP EXEC which does
> the FILEDEF * CLEAR before the call to the compiler, so I did not recognize the
> problem that the OP had. Maybe I had the problem before and found the solution
> myself.
>
> I also saw the solution when I saw that the compiler complained about a
> missing SYSPRINT declaration on the compile of ARITH on the OP's run, but there
> is no PUT statement in there. So the compiler must have compiled DRIVER PLI
> again.
>
> Thanks for the LOAD ... (NODUP suggestion.
>
> Kind regards
>
> Bernd
>
>
>
> Am 22.03.2013 08:59, schrieb R.F.:
>>
>>
>>
>>
>> --- In H390-VM@yahoogroups.com, G.M. wrote:
>> > Now why the duplicate identifier?
>>
>> The compiler generates a IHENTRY CSECT as an entry point for the module. The
>> loader keep the one of the MAIN module and ignores the others (but warn you
>> about them). You can suppress the message with the option "nodup":
>>
>> load driver arith ( nodup
>>
>> There may be a way to compile a module without producing this CSECT but I
>> haven't look for it.
>>
>> > why does one have to do the filedef * clear?
>>
>> Beacuse the PLI command does not clear them. First compile driver and query
>> the file definitions:
>>
>> pli driver
>> query filedef
>>
>> you should see the file definitions for LISTING, TEXT, PLI, and SYSUT1. Those
>> were re-used in your arith compilation, hence the absence of TEXT and LISTING
>> for arith.
>>
>> Yours truly,
>>
>> R.F.
>>
>

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