开云体育


Re: building BREXX

 

On Tue, Feb 11, 2020 at 04:41 PM, rvjansen@... wrote:
break things this quickly and catastrophically and be able to start from scratch
For me the most useful "cultural" description is this.

Computers and VMs are like pets, they have names and you keep them fed and healthy; containers are like cattle, they have no name and you shoot them if they get ill.


Re: building BREXX

 

On Tue, Feb 11, 2020 at 04:41 PM, rvjansen@... wrote:
build mechanism
This is my most complex example - the script that builds my yata thingy -?

Basically it IPLs, sends in 3 files via the card reader, does the build, runs a test, puts the binary on a tape, and shuts down


Re: building BREXX

 

开云体育

Hi Adrian,

works like a charm. Except high CPU usage of com.docker.hyperkit, but if I google around, that seems a macos docker app problem. Extremely useful for the type of thing I am planning to do, because I never have been able to break things this quickly and catastrophically and be able to start from scratch without touching my ‘precious’ images (i.e. those that have more work invested in them).

Thank you for putting this together. I’ll study your build mechanism and will bother you with questions.

best regards,

搁别苍é.

On 10 Feb 2020, at 13:49, adriansutherland67 <adrian@...> wrote:

On Mon, Feb 10, 2020 at 11:14 AM, adriansutherland67 wrote:
docker run --rm -d -p 3270:3270 -p 8038:8038 -p 3505:3505 --name vm370 adriansutherland/vm370:1.3.5
Fast start - Use from the normal windows console:

* start the container
docker run -d -p 3270:3270 -p 8038:8038 -p 3505:3505 --name vm370 adriansutherland/vm370:1.3.5

* attach to the linux console
docker exec -it vm370 /bin/bash

This will give you a linux command line, then:

herccontrol "ipl 141"

c3270 localhost:3270

(on my windows computer the mouse even works - which surprised me)
(and ctrl-c clears the 3270 screen)

Use the menu to exit c3270
then "exit" to close the shell.
And - yes you can do multiple shells via docker attach

* To stop (pause) the container
docker stop vm370

* To kill it (pull the plug)
docker kill vm370

* to unpause/start it
docker start vm370

* And to remove and delete the container
docker rm vm370

Boom!

In this config use the hercules webconsole (or herccontrol); hercules is running detached.

If your data/time becomes completely unsynced you need to restart docker desktop (and therefore stop/start your container); defect with Docker and Hybernate.

You know - its a bit like CP ...


Re: building BREXX

 

开云体育

No problem. I fixed it by putting an &DISK = A in between, marking the first time I edited something in classic exec.
Logging on after that loads the new BREXX TEXT, which means I can now debug, change things to see what happens.

I’ll keep the list posted.

best regards,

搁别苍é.

On 11 Feb 2020, at 11:18, Dave Wade <dave.g4ugm@...> wrote:

I can't check today. What should happen is RESLIB should patch the command table..?

Dave

On Tue, 11 Feb 2020, 9:53 am?rvjansen@..., <rvjansen@...> wrote:
Hi Dave,

that is good to know. Question then is, why does the MKBREXX EXEC build a BREXX MODULE. I still cannot build the BREXX TEXT.
Just to verify: when I mount brexx 191 as J, and run MKBREXX, the .TEXT modules go to my A disk. Is that correct? Or do they need to go to J? This is what MKBREXX assumes.
Do I need to link brexx 191 in a different way? What happens when you run it?

best regards,



Re: building BREXX

 

I can't check today. What should happen is RESLIB should patch the command table..?

Dave


On Tue, 11 Feb 2020, 9:53 am rvjansen@..., <rvjansen@...> wrote:
Hi Dave,

that is good to know. Question then is, why does the MKBREXX EXEC build a BREXX MODULE. I still cannot build the BREXX TEXT.
Just to verify: when I mount brexx 191 as J, and run MKBREXX, the .TEXT modules go to my A disk. Is that correct? Or do they need to go to J? This is what MKBREXX assumes.
Do I need to link brexx 191 in a different way? What happens when you run it?

best regards,

搁别苍é.


> On 11 Feb 2020, at 10:22, Dave Wade <dave.g4ugm@...> wrote:
>
> Folks (especially Rene)
>
> There is no REXX MODULE because having a REXX module in CMS is pretty useless.
> In VM/370 CMS? MODULES are usually loaded at the same location in main store, in the start of the user area.
> So if you build REXX as a module whenever it calls a program that runs in the user area it overwrites REXX.
> RESLIB loads REXX at the top of storage and reserves the storage with a system flag.
> You can't easily build a module to do that as they load absolute (in R6 at least) and you don't know how big some ones VM is when you build the module.
>
> Dave
>
> p.s. yes I know some modules run in the transient space, but it doesn't help. It just makes things worse.
>
>> -----Original Message-----
>> From: [email protected] <[email protected]> On Behalf Of
>> rvjansen@...
>> Sent: 09 February 2020 20:15
>> To: [email protected]
>> Subject: Re: [h390-vm] building BREXX
>>
>> One piece of the puzzle is this:
>>
>> There is no DMSREX module in VM/370. René Ferland confirmed this.
>>
>> The RESLIB command is used to load BREXX TEXT into resident storage.
>> RESLIB itself is not documented in the official VM/370 documents, I just read
>> the System Programmer’s guide and the CMS Commands and Macros guide.
>> It is documented by HELP RESLIB, and was written by Andrew Hanushevsky,
>> Langmuir Laboratory, Cornell University in 1980.
>>
>> The HELP RESLIB (MORE command states that every program that is loaded in
>> this way, needs to be serially reusable (which is one step above/below
>> reentrant/reenterable, depending on how you see it). This means BREXX
>> may not have compiler initialized static variables.? I wonder if GCC has an
>> option to make sure it does not, and I would be more at ease if it was
>> reentrant.
>>
>> The loading is done for each VM/user by an exec called SYSPROF EXEC. I
>> found out by doing a RESLIB DELETE GCCLIB, RESLIB DELETE DMSREX for my
>> MAINT user, and trying to make it work again afterwards. It did not, because
>> the botched builds left a wrong SYSPROF EXEC on MAINT’s A disk, or that is
>> what I think.
>>
>> As soon as I found this, and deleted the one on the A disk, the one on the V
>> disk is executed at logon and the info is correct again. Interestingly, the
>> modules GCCLIB and DMSREXX are loaded at different (virtual) address in
>> different userid’s. Then I remembered that the release notes for Sixpack 1.2
>> say:
>>
>>? ? ? ? During initialization, CMS executes "SYSPROF EXEC" before
>> executing "PROFILE EXEC". This allows you to ensure certain commands are
>> always executed for users.
>>
>>
>> These commands are the RESLIB commands for BREXX; it then chains
>> SYSPROX EXEC for the mecaff programs.
>>
>> I’ll keep you posted on more progress, for example whe I find out how the
>> exec processor finds it is a REXX exec, which is rather anachronistic for this
>> level of VM.
>>
>> best regards,
>>
>> René Jansen.
>>
>
>
>
>
>





Re: building BREXX

 

Hi Dave,

that is good to know. Question then is, why does the MKBREXX EXEC build a BREXX MODULE. I still cannot build the BREXX TEXT.
Just to verify: when I mount brexx 191 as J, and run MKBREXX, the .TEXT modules go to my A disk. Is that correct? Or do they need to go to J? This is what MKBREXX assumes.
Do I need to link brexx 191 in a different way? What happens when you run it?

best regards,

搁别苍é.

On 11 Feb 2020, at 10:22, Dave Wade <dave.g4ugm@...> wrote:

Folks (especially Rene)

There is no REXX MODULE because having a REXX module in CMS is pretty useless.
In VM/370 CMS MODULES are usually loaded at the same location in main store, in the start of the user area.
So if you build REXX as a module whenever it calls a program that runs in the user area it overwrites REXX.
RESLIB loads REXX at the top of storage and reserves the storage with a system flag.
You can't easily build a module to do that as they load absolute (in R6 at least) and you don't know how big some ones VM is when you build the module.

Dave

p.s. yes I know some modules run in the transient space, but it doesn't help. It just makes things worse.

-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of
rvjansen@...
Sent: 09 February 2020 20:15
To: [email protected]
Subject: Re: [h390-vm] building BREXX

One piece of the puzzle is this:

There is no DMSREX module in VM/370. René Ferland confirmed this.

The RESLIB command is used to load BREXX TEXT into resident storage.
RESLIB itself is not documented in the official VM/370 documents, I just read
the System Programmer’s guide and the CMS Commands and Macros guide.
It is documented by HELP RESLIB, and was written by Andrew Hanushevsky,
Langmuir Laboratory, Cornell University in 1980.

The HELP RESLIB (MORE command states that every program that is loaded in
this way, needs to be serially reusable (which is one step above/below
reentrant/reenterable, depending on how you see it). This means BREXX
may not have compiler initialized static variables. I wonder if GCC has an
option to make sure it does not, and I would be more at ease if it was
reentrant.

The loading is done for each VM/user by an exec called SYSPROF EXEC. I
found out by doing a RESLIB DELETE GCCLIB, RESLIB DELETE DMSREX for my
MAINT user, and trying to make it work again afterwards. It did not, because
the botched builds left a wrong SYSPROF EXEC on MAINT’s A disk, or that is
what I think.

As soon as I found this, and deleted the one on the A disk, the one on the V
disk is executed at logon and the info is correct again. Interestingly, the
modules GCCLIB and DMSREXX are loaded at different (virtual) address in
different userid’s. Then I remembered that the release notes for Sixpack 1.2
say:

? During initialization, CMS executes "SYSPROF EXEC" before
executing "PROFILE EXEC". This allows you to ensure certain commands are
always executed for users.


These commands are the RESLIB commands for BREXX; it then chains
SYSPROX EXEC for the mecaff programs.

I’ll keep you posted on more progress, for example whe I find out how the
exec processor finds it is a REXX exec, which is rather anachronistic for this
level of VM.

best regards,

René Jansen.




Re: building BREXX

 

Folks (especially Rene)

There is no REXX MODULE because having a REXX module in CMS is pretty useless.
In VM/370 CMS MODULES are usually loaded at the same location in main store, in the start of the user area.
So if you build REXX as a module whenever it calls a program that runs in the user area it overwrites REXX.
RESLIB loads REXX at the top of storage and reserves the storage with a system flag.
You can't easily build a module to do that as they load absolute (in R6 at least) and you don't know how big some ones VM is when you build the module.

Dave

p.s. yes I know some modules run in the transient space, but it doesn't help. It just makes things worse.

-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of
rvjansen@...
Sent: 09 February 2020 20:15
To: [email protected]
Subject: Re: [h390-vm] building BREXX

One piece of the puzzle is this:

There is no DMSREX module in VM/370. René Ferland confirmed this.

The RESLIB command is used to load BREXX TEXT into resident storage.
RESLIB itself is not documented in the official VM/370 documents, I just read
the System Programmer’s guide and the CMS Commands and Macros guide.
It is documented by HELP RESLIB, and was written by Andrew Hanushevsky,
Langmuir Laboratory, Cornell University in 1980.

The HELP RESLIB (MORE command states that every program that is loaded in
this way, needs to be serially reusable (which is one step above/below
reentrant/reenterable, depending on how you see it). This means BREXX
may not have compiler initialized static variables. I wonder if GCC has an
option to make sure it does not, and I would be more at ease if it was
reentrant.

The loading is done for each VM/user by an exec called SYSPROF EXEC. I
found out by doing a RESLIB DELETE GCCLIB, RESLIB DELETE DMSREX for my
MAINT user, and trying to make it work again afterwards. It did not, because
the botched builds left a wrong SYSPROF EXEC on MAINT’s A disk, or that is
what I think.

As soon as I found this, and deleted the one on the A disk, the one on the V
disk is executed at logon and the info is correct again. Interestingly, the
modules GCCLIB and DMSREXX are loaded at different (virtual) address in
different userid’s. Then I remembered that the release notes for Sixpack 1.2
say:

? During initialization, CMS executes "SYSPROF EXEC" before
executing "PROFILE EXEC". This allows you to ensure certain commands are
always executed for users.


These commands are the RESLIB commands for BREXX; it then chains
SYSPROX EXEC for the mecaff programs.

I’ll keep you posted on more progress, for example whe I find out how the
exec processor finds it is a REXX exec, which is rather anachronistic for this
level of VM.

best regards,

René Jansen.


Re: building BREXX

 

开云体育

Its a tad harder, because it done through the query command and I didn’t want to front that with an exec. Too many options?

?

Dave

?

From: [email protected] <[email protected]> On Behalf Of adriansutherland67
Sent: 10 February 2020 22:31
To: [email protected]
Subject: Re: [h390-vm] building BREXX

?

On Mon, Feb 10, 2020 at 09:59 PM, Dave Wade wrote:

What is holding me up is reporting proper versions


Cheat! Just add VERSION EXEC to the S drive (or wherever!) ?


Re: building BREXX

 

On Mon, Feb 10, 2020 at 08:10 PM, rvjansen@... wrote:
we are extremely grateful for the work people put into this and certainly Dave for keeping this alive and kicking
Hear hear!


Re: building BREXX

 

On Mon, Feb 10, 2020 at 09:59 PM, Dave Wade wrote:
What is holding me up is reporting proper versions

Cheat! Just add VERSION EXEC to the S drive (or wherever!) ?


Re: building BREXX

 

开云体育

I have just about finished producing a new 1.3 beta with this included.

What is holding me up is reporting proper versions

?

Dave

?

From: [email protected] <[email protected]> On Behalf Of rvjansen@...
Sent: 10 February 2020 21:51
To: [email protected]
Subject: Re: [h390-vm] building BREXX

?

Thanks Eddy!

搁别苍é.



On 10 Feb 2020, at 21:46, eddy_balem@... wrote:

?

With respect to GCCLIB problems here is Dr Hans Latz explanation of the problem:

?


Groups.io Links:

You receive all messages sent to this group.

View/Reply Online (#317) | Reply To Group | Reply To Sender | Mute This Topic | New Topic

Your Subscription | Contact Group Owner | Unsubscribe [rvjansen@...]


Re: building BREXX

 

开云体育

Thanks Eddy!

搁别苍é.

On 10 Feb 2020, at 21:46, eddy_balem@... wrote:

?
With respect to GCCLIB problems here is Dr Hans Latz explanation of the problem:


Groups.io Links:

You receive all messages sent to this group.

View/Reply Online (#317) | Reply To Group | Reply To Sender | Mute This Topic | New Topic

Your Subscription | Contact Group Owner | Unsubscribe [rvjansen@...]

_._,_._,_


Re: building BREXX

 

On Mon, Feb 10, 2020 at 08:46 PM, <eddy_balem@...> wrote:
With respect to GCCLIB problems here is Dr Hans Latz explanation of the problem:
Yep - and the version on sixpack beta 3 has not got this fix - and moreover I believe has some other fixes that are probably the root cause of some brexx defects.

This is why I am working to get this??built into?

Adrian


Re: building BREXX

 

开云体育

With respect to GCCLIB problems here is Dr Hans Latz explanation of the problem:

GCCLIB without DOSTRANS????????????????????????????? Dr. Hans-Walter Latz, 2014-01-08

1???????? Drawbacks of the resident GCCLIB in VM/370 SixPack 1.2

The native C library GCCLIB, which is part of VM/370 SixPack 1.2, can be loaded as resident library, allowing for small MODULEs. For this, the SYSPROF profile loads the GCCLIB into the resident memory with RESLIB and uses the DOSTRANS field in the NUCON area to store the base pointer to the dispatch table of the resident library. The pointer is fetched by the GCCLIB-stubs (CL*-modules) linked into the programs to reference the corresponding real function implementation in the resident GCCLIB.

This leads to problems (i.e. addressing errors and very likely to ABENDs) if the DOSTRANS field is needed for its original purpose, i.e. when running DOS/VSAM accessing programs like KICKS, as the DOSTRANS field then no longer points to the dispatch table of the resident library when a GCCLIB based program is started afterwards.

Furthermore, the memory cleanup portion of the ABEND handler in CMS (DMSABN, invoked after a program ABEND or after issuing a HX immediate command) will assume that additional memory was allocated by an aborted DOS/VSAM program if DOSTRANS is not zero. This will lead to a wrong computation of the memory size to be free-ed, which generally results in a warning or in halting CMS execution, requiring to re-IPL CMS. Issuing the HX command with the original resident GCCLIB will usually result in the following message when entering the next command to CMS:

DMSABN149T 175 (HEX 0000AF) DOUBLEWORDS OF SYSTEM STORAGE HAVE BEEN DESTROYED. RE-IPL CMS.
CP ENTERED; DISABLED WAIT PSW '00020000 6001F0CE'

2???????? Modified functionality in GCCLIB

To resolve these problems, the addressing mechanism for the dispatch table of the resident library has been modified as follows:

  • The resident library's base address is fetched early in the startup phase of the C program (GCCLIB-module CMSENTRY) and stored in a new ENTRY variable.
  • The CL*-stubs now use this variable to load the base address to the dispatch table of the resident library.

So the DOSTRANS field is no longer needed for the resident GCCLIB and can serve again its original purpose.

After the modified resident GCCLIB is installed, all MODULEs using GCCLIB created under SixPack 1.2 must be re-linked against this new version, as the DOSTRANS field no longer holds the address of the dispatch table and programs with the old stubs will therefore crash.

Programs loaded from TEXT or TXTLIB files need not to be modified, as loading them with the new GCCLIB TXTLIB will automatically use the new stubs to access the resident GCCLIB. This is also valid for the bREXX interpreter, which can be used unmodified and is loaded by the system profile into resident memory using the modified GCCLIB.

Eddy Balem


Re: building BREXX

 

开云体育

No, nothing wrong of course. It’s just that we are not used to it (imagine doing a change in VM, but now as a ++USERMOD in SMP/E - could do that in my sleep, but I’d rather never do it again now).
And it is also that Git as distributed version management system, and Docker as container technology, make it much easier to collaborate on this kind of work. In a non-locking version management system work of several people can be merged, branches can be taken, and an automated testing environment can be set up, and this starting from a known situation, for example a clean Sixpack 1.4 distribution. This is why we (well Adrian and I at least) like this approach, and rather not go back to working without version management, or with locking version management systems like PVCS or Endevor.

Of course everyone should work the way they like, and of course we are extremely grateful for the work people put into this and certainly Dave for keeping this alive and kicking. We just want to assist the best way we can, with the tools we think will allow us to contribute in a meaningful way.

best regards,

René Jansen
(President, Rexx Language Association)


On 10 Feb 2020, at 18:56, George Shedlock <gshedlock352@...> wrote:

Maybe I am missing something.
Is there something wrong with the IBM supplied utilities to install/maintain the system code?
I for one would prefer to use the old tried and true methods.

Possibly I am thinking of another version of VM (or possibly it was something we wrote in-house) but we used something called UPDATE which had the ability to start with the normal distributed (base) software and apply the entire library of fixes and updates to that code and build all of the necessary steps and modules to the running system. Of course we had to schedule an IPL from time to time to get some of the fixes installed.

I will dig through some old stuff and see if I can find some of the old notes and procedures we had.

George

On 2/10/2020 12:33 PM, adriansutherland67 wrote:
On Mon, Feb 10, 2020 at 05:05 PM, Dave Wade wrote:
if the sequence numbers are gone
In Assembler files right? No need to strip them out if we put it in GIT.

However, I suppose we might need a very simple tool to add new ones if lines are entered outside of VM/370? I assume the algorithm to make sequence numbers is triveral?

A

Virus-free.




reproducible brexx error

 

This is reproducible:

unzip a clean sixpack 1.3
hercules -f sixpack.conf
logon cmsuser
link maint 191 202 rr
acc 202 z

rexxtest

Ready; T=0.02/0.04 19:34:28
rexxtest
DMSITP141T PROTECTION EXCEPTION OCCURRED AT E788A6 IN ROUTINE DMSREX.
CMS
i cms
DMSABN149T 109 (HEX 00006D) DOUBLEWORDS OF SYSTEM STORAGE HAVE BEEN DESTROYED. RE-IPL CMS.
CP ENTERED; DISABLED WAIT PSW '00020000 6001F04E'

Have to do a system reset before re-IPLling CMS, because the next one also fails. This is on macos 10.15.3, on hercules

HHC01413I Hercules version 4.0.0 (4.0.0.8871)
HHC01414I (C) Copyright 1999-2016 by Roger Bowler, Jan Jaeger, and others
HHC01414I Commit bec74e3a.

best regards,

搁别苍é.


Re: building BREXX

 

开云体育

George,

?

Thats my preference too.

?

Dave

?

From: [email protected] <[email protected]> On Behalf Of George Shedlock
Sent: 10 February 2020 17:57
To: [email protected]
Subject: Re: [h390-vm] building BREXX

?

Maybe I am missing something.

Is there something wrong with the IBM supplied utilities to install/maintain the system code?

I for one would prefer to use the old tried and true methods.

?

Possibly I am thinking of another version of VM (or possibly it was something we wrote in-house) but we used something called UPDATE which had the ability to start with the normal distributed (base) software and apply the entire library of fixes and updates to that code and build all of the necessary steps and modules to the running system. Of course we had to schedule an IPL from time to time to get some of the fixes installed.

?

I will dig through some old stuff and see if I can find some of the old notes and procedures we had.

?

George

?

On 2/10/2020 12:33 PM, adriansutherland67 wrote:

On Mon, Feb 10, 2020 at 05:05 PM, Dave Wade wrote:

if the sequence numbers are gone

In Assembler files right? No need to strip them out if we put it in GIT.

However, I suppose we might need a very simple tool to add new ones if lines are entered outside of VM/370? I assume the algorithm to make sequence numbers is triveral?

A

?

Virus-free.

?


Re: building BREXX

 

开云体育

There isn’t an algorithm. You choose!

?

Dave

?

From: [email protected] <[email protected]> On Behalf Of adriansutherland67
Sent: 10 February 2020 17:34
To: [email protected]
Subject: Re: [h390-vm] building BREXX

?

On Mon, Feb 10, 2020 at 05:05 PM, Dave Wade wrote:

if the sequence numbers are gone

In Assembler files right? No need to strip them out if we put it in GIT.

However, I suppose we might need a very simple tool to add new ones if lines are entered outside of VM/370? I assume the algorithm to make sequence numbers is triveral?

A


Re: building BREXX

George Shedlock
 

开云体育

Maybe I am missing something.
Is there something wrong with the IBM supplied utilities to install/maintain the system code?
I for one would prefer to use the old tried and true methods.

Possibly I am thinking of another version of VM (or possibly it was something we wrote in-house) but we used something called UPDATE which had the ability to start with the normal distributed (base) software and apply the entire library of fixes and updates to that code and build all of the necessary steps and modules to the running system. Of course we had to schedule an IPL from time to time to get some of the fixes installed.

I will dig through some old stuff and see if I can find some of the old notes and procedures we had.

George

On 2/10/2020 12:33 PM, adriansutherland67 wrote:

On Mon, Feb 10, 2020 at 05:05 PM, Dave Wade wrote:
if the sequence numbers are gone
In Assembler files right? No need to strip them out if we put it in GIT.

However, I suppose we might need a very simple tool to add new ones if lines are entered outside of VM/370? I assume the algorithm to make sequence numbers is triveral?

A

Virus-free.



Re: building BREXX

 

On Mon, Feb 10, 2020 at 05:05 PM, Dave Wade wrote:
if the sequence numbers are gone
In Assembler files right? No need to strip them out if we put it in GIT.

However, I suppose we might need a very simple tool to add new ones if lines are entered outside of VM/370? I assume the algorithm to make sequence numbers is triveral?

A