¿ªÔÆÌåÓý


Re: Three questions about VM/CE (Left, middle, and right field question)

 

¿ªÔÆÌåÓý

Bertram,

Whilst licencing is difficult, most any IBM OS works on Hercules.

TCP/IP does not use the ISO 7-layer model. If you think it does please explain where the ¡°presentation¡± layer is implemented.

The work to make VM/CE understand TCP/IP could be similar to the work done to make VM/370 understand TCP/IP

It could be less if you leverage the support in the underlying host OS => windows/linux/macos.

Dave

?

?

From: [email protected] <[email protected]> On Behalf Of Bertram Moshier
Sent: 19 October 2022 21:25
To: [email protected]
Subject: Re: [h390-vm] Three questions about VM/CE (Left, middle, and right field question)

?

Hello,

?

I'm assuming the work necessary to get VM/CE to recognize the OSI 7 layer model is the same as on any hardware supporting the Internet, right?

?

I mean Hercules needs to look like real iron.? Thus someone with the legal right would be able to take z/VM or VM/ESA have it run - unmodified on Hercules.

?

So, the work to get VM/CE to support the OSI 7 layer model would be about the same as what it took IBM to do initially.? Am I?missing something?

?

Thank you

?

?

?

?

?

On Mon, Oct 17, 2022 at 7:18 AM Harold Grovesteen <h.grovsteen@...> wrote:

The answer to your middle question is A LOT of work.? All of it in C and coded to Hercules internal constructs.

?

However, there is no need to create a "new" device for Internet connectivity.? The issue is not Hercules, but the guest OS (VM I am assuming) lacks TCP/IP intelligence.? At this vintage of guest operating system, Hercules offers the TCPIP instruction.? It allows non-privileged access to the host's native TCP interface for connecting to a host socket.? This interface has been used to support TCP on MVS.? What VM/370 work would be required to allow a CMS virtual machine to do the same is an unanswered question.

?

There are a number of "devices" already supported by Hercules for IP connectivity.? Again, this vintage of VM knows nothing about these Hercules devices, per se.? Someone who understands the internals of VM/370 would be able to assist with connecting such a device to a CMS guest.? Some of these device uses CTC channel protocol that VM/370 understands.? I think the work there is much less.? Getting CMS the "intelligence" to use the CTC device is another challenge.? The MVS programs that use the TCPIP instruction might provide a foundation for coding a server or client program.

?

Just a few thoughts on your "middle" question.

?

Harold Grovesteen

?

On Mon, 2022-10-17 at 03:21 -0500, Bertram Moshier wrote:

Hi,

?

I have three questions.? As a side note, I'm a ham radio operator (WB8ERT) and use DMR.

?

My left field question would be for fellow ham radio operators.? I understand getting a PI-Raspberry to operate as? a transmit and receive DMR.? Just for fun, I'm wondering about doing the same using VM.? Is it possible, in theory?? I think it should be possible.? The DMR code is in C.? SIO to send and receive and yet . . .

?

Middle question:? What is involved in getting herc to see a new device that would then be seen by VM?? I know from my work at Cray Research, Inc, creating hardware for S/370 systems is possible.? We had two hardware devices to talk to a Cray.? One looked like a CTC to the S/370 and the other was by Network Systems.? To our Station software, they looked very similar.? I also worked on the Seagate STK4400 to Cray-1 and Cray-2 interface (using tape connected to the Cray and a 3270 hardware (as I remember) to control the STK for S/370 systems.

?

Right field:? Is there an HTTPD for VM/CE? By this I mean a HTTP server for VM/CE?? OH, is it possible again on VM/CE to run a line by line browser.? (Yeah, I remember using the Internet using a line by line browser (but not on VM).? We connected to an Unix system for our Internet work.

?

Thank you for your time and consideration.

?


Re: Three questions about VM/CE (Left, middle, and right field question)

 

Harold,

Support for TCP/IP would include the physical layer of the OSI model.? Thus Hercules would need to support the myriad?number of devices one can hook to the IBM iron.? Now I see a large part of the problem.? I was just thinking of the OSI model, itself.

When working at Cray, I spent over 2 years dealing with and programming various parts of the OSI model on Cray and OS/2.? We were working on porting the model to these software and hardware platforms.? Of course, others were providing the drivers for the hardware.

It would be really nice to have this for VM/CE, but you're right it would be a team effort.

(From my perspective, at the higher layers (3+) the various devices (like all the SNA devices) didn't matter.)

I'd be happy to join a future team looking at adding the OSI 7 layer (better known as TCP/I:) to VM/CE.

Bert.

On Mon, Oct 17, 2022 at 7:18 AM Harold Grovesteen <h.grovsteen@...> wrote:
The answer to your middle question is A LOT of work.? All of it in C and coded to Hercules internal constructs.

However, there is no need to create a "new" device for Internet connectivity.? The issue is not Hercules, but the guest OS (VM I am assuming) lacks TCP/IP intelligence.? At this vintage of guest operating system, Hercules offers the TCPIP instruction.? It allows non-privileged access to the host's native TCP interface for connecting to a host socket.? This interface has been used to support TCP on MVS.? What VM/370 work would be required to allow a CMS virtual machine to do the same is an unanswered question.

There are a number of "devices" already supported by Hercules for IP connectivity.? Again, this vintage of VM knows nothing about these Hercules devices, per se.? Someone who understands the internals of VM/370 would be able to assist with connecting such a device to a CMS guest.? Some of these device uses CTC channel protocol that VM/370 understands.? I think the work there is much less.? Getting CMS the "intelligence" to use the CTC device is another challenge.? The MVS programs that use the TCPIP instruction might provide a foundation for coding a server or client program.

Just a few thoughts on your "middle" question.

Harold Grovesteen

On Mon, 2022-10-17 at 03:21 -0500, Bertram Moshier wrote:
Hi,

I have three questions.? As a side note, I'm a ham radio operator (WB8ERT) and use DMR.

My left field question would be for fellow ham radio operators.? I understand getting a PI-Raspberry to operate as? a transmit and receive DMR.? Just for fun, I'm wondering about doing the same using VM.? Is it possible, in theory?? I think it should be possible.? The DMR code is in C.? SIO to send and receive and yet . . .

Middle question:? What is involved in getting herc to see a new device that would then be seen by VM?? I know from my work at Cray Research, Inc, creating hardware for S/370 systems is possible.? We had two hardware devices to talk to a Cray.? One looked like a CTC to the S/370 and the other was by Network Systems.? To our Station software, they looked very similar.? I also worked on the Seagate STK4400 to Cray-1 and Cray-2 interface (using tape connected to the Cray and a 3270 hardware (as I remember) to control the STK for S/370 systems.

Right field:? Is there an HTTPD for VM/CE? By this I mean a HTTP server for VM/CE?? OH, is it possible again on VM/CE to run a line by line browser.? (Yeah, I remember using the Internet using a line by line browser (but not on VM).? We connected to an Unix system for our Internet work.

Thank you for your time and consideration.


Re: Three questions about VM/CE (Left, middle, and right field question)

 

Martin,

Thank you for the information / link.

Bert

On Mon, Oct 17, 2022 at 5:03 AM Martin Scheffler <San-Lorenzo@...> wrote:
On Mon, Oct 17, 2022 at 10:21 AM, Bertram Moshier wrote:
Right field:? Is there an HTTPD for VM/CE?
There is no TCP/IP in VM/CE.
See - an early IBM implementation.

Martin


Re: Three questions about VM/CE (Left, middle, and right field question)

 

Hello,

I'm assuming the work necessary to get VM/CE to recognize the OSI 7 layer model is the same as on any hardware supporting the Internet, right?

I mean Hercules needs to look like real iron.? Thus someone with the legal right would be able to take z/VM or VM/ESA have it run - unmodified on Hercules.

So, the work to get VM/CE to support the OSI 7 layer model would be about the same as what it took IBM to do initially.? Am I?missing something?

Thank you





On Mon, Oct 17, 2022 at 7:18 AM Harold Grovesteen <h.grovsteen@...> wrote:
The answer to your middle question is A LOT of work.? All of it in C and coded to Hercules internal constructs.

However, there is no need to create a "new" device for Internet connectivity.? The issue is not Hercules, but the guest OS (VM I am assuming) lacks TCP/IP intelligence.? At this vintage of guest operating system, Hercules offers the TCPIP instruction.? It allows non-privileged access to the host's native TCP interface for connecting to a host socket.? This interface has been used to support TCP on MVS.? What VM/370 work would be required to allow a CMS virtual machine to do the same is an unanswered question.

There are a number of "devices" already supported by Hercules for IP connectivity.? Again, this vintage of VM knows nothing about these Hercules devices, per se.? Someone who understands the internals of VM/370 would be able to assist with connecting such a device to a CMS guest.? Some of these device uses CTC channel protocol that VM/370 understands.? I think the work there is much less.? Getting CMS the "intelligence" to use the CTC device is another challenge.? The MVS programs that use the TCPIP instruction might provide a foundation for coding a server or client program.

Just a few thoughts on your "middle" question.

Harold Grovesteen

On Mon, 2022-10-17 at 03:21 -0500, Bertram Moshier wrote:
Hi,

I have three questions.? As a side note, I'm a ham radio operator (WB8ERT) and use DMR.

My left field question would be for fellow ham radio operators.? I understand getting a PI-Raspberry to operate as? a transmit and receive DMR.? Just for fun, I'm wondering about doing the same using VM.? Is it possible, in theory?? I think it should be possible.? The DMR code is in C.? SIO to send and receive and yet . . .

Middle question:? What is involved in getting herc to see a new device that would then be seen by VM?? I know from my work at Cray Research, Inc, creating hardware for S/370 systems is possible.? We had two hardware devices to talk to a Cray.? One looked like a CTC to the S/370 and the other was by Network Systems.? To our Station software, they looked very similar.? I also worked on the Seagate STK4400 to Cray-1 and Cray-2 interface (using tape connected to the Cray and a 3270 hardware (as I remember) to control the STK for S/370 systems.

Right field:? Is there an HTTPD for VM/CE? By this I mean a HTTP server for VM/CE?? OH, is it possible again on VM/CE to run a line by line browser.? (Yeah, I remember using the Internet using a line by line browser (but not on VM).? We connected to an Unix system for our Internet work.

Thank you for your time and consideration.


Hello

 

Hello,

This is a test.


FIX: Issue #72 -- EE changes the file mode number : binaries available #VMCE #github

 

Binaries available for fix of :

/g/h390-vm/files/MECAFF%20tools:%20fixes%20and%20features/EE125A72.VMARC



diff eecore.c.e eecore.c.a?????????????????????????????????????????????????????????? ?
901a902????????????????????????????????????????????????????????????????????????????? ?
>?? fm[1] = fInfo->filemode[1];? /* preserve file mode number of existing file */??? ?
Ready(00001); T=0.18/0.22 07:39:59?????????????????????????????????????????????????? ?
???????????????????????????????????????????????????????????????????????????????????? ?
diff eemain.h.f eemain.h.a?????????????????????????????????????????????????????????? ?
24c24??????????????????????????????????????????????????????????????????????????????? ?
< #define VERSION "V1.2.5"?????????????????????????????????????????????????????????? ?
---????????????????????????????????????????????????????????????????????????????????? ?
> #define VERSION "V1.2.5a72" /* https://github.com/s390guy/vm370/issues/72 fixed */ ?
Ready(00001); T=0.03/0.04 05:21:53?????????????????????????????????????????????????? ?
???????????????????????????????????????????????????????????????????????????????????? ?
vmarc list EE125A72 VMARC A????????????????????????????????????????????????????????? ?
EEMAIN?? H??????? A1. Bytes in=??? 4400, bytes out=?????? 0 (???? 0%).?????????????? ?
EECORE?? C??????? A1. Bytes in=?? 24160, bytes out=?????? 0 (???? 0%).?????????????? ?
EECORE?? TEXT???? A1. Bytes in=?? 22800, bytes out=?????? 0 (???? 0%).?????????????? ?
EEMAIN?? TEXT???? A1. Bytes in=?? 13440, bytes out=?????? 0 (???? 0%).?????????????? ?
EE$D???? MAP????? A5. Bytes in=??? 5920, bytes out=?????? 0 (???? 0%).?????????????? ?
EE$D???? MODULE?? A1. Bytes in=? 162480, bytes out=?????? 0 (???? 0%).?????????????? ?
EE$S???? MAP????? A5. Bytes in=??? 5920, bytes out=?????? 0 (???? 0%).?????????????? ?
EE$S???? MODULE?? A1. Bytes in=? 162400, bytes out=?????? 0 (???? 0%).?????????????? ?
EE$VMARC EXEC???? A1. Bytes in=???? 400, bytes out=?????? 0 (???? 0%).?????????????? ?


File /MECAFF tools: fixes and features/EE125A72.VMARC uploaded #file-notice

Group Notification
 

The following files and folders have been uploaded to the Files area of the [email protected] group.

By: Martin Scheffler <San-Lorenzo@...>

Description:
Binaries for fix of https://github.com/s390guy/vm370/issues/72 EE changes the file mode number diff eecore.c.e eecore.c.a 901a902 > fm[1] = fInfo->filemode[1]; /* preserve file mode number of existing file */ Ready(00001); T=0.18/0.22 07:39:59 diff eemain.h.f eemain.h.a 24c24 < #define VERSION "V1.2.5" --- > #define VERSION "V1.2.5a72" /* https://github.com/s390guy/vm370/issues/72 fixed */ Ready(00001); T=0.03/0.04 05:21:53 vmarc list EE125A72 VMARC A EEMAIN H A1. Bytes in= 4400, bytes out= 0 ( 0%). EECORE C A1. Bytes in= 24160, bytes out= 0 ( 0%). EECORE TEXT A1. Bytes in= 22800, bytes out= 0 ( 0%). EEMAIN TEXT A1. Bytes in= 13440, bytes out= 0 ( 0%). EE$D MAP A5. Bytes in= 5920, bytes out= 0 ( 0%). EE$D MODULE A1. Bytes in= 162480, bytes out= 0 ( 0%). EE$S MAP A5. Bytes in= 5920, bytes out= 0 ( 0%). EE$S MODULE A1. Bytes in= 162400, bytes out= 0 ( 0%). EE$VMARC EXEC A1. Bytes in= 400, bytes out= 0 ( 0%).


Re: Possible bug in BREXX parse instruction

 

On Mon, Oct 17, 2022 at 10:41 PM, Dave Wade wrote:
It doesn't work in VM370. Jason won't release the source so I can't fix. The library is full of OS macros which breaks many things we do on VM
Well, that's the end of that, isn't it? :-)

?... Mark S.
Oh what a tangled web we weave, when first we practice to code C.


Re: Possible bug in BREXX parse instruction

 

I also have some qualms about some of the macros on MVS.? I may have misread the documentation, but it is unclear - to me - how reading the VTOC works.

All the best

MA


Re: Possible bug in BREXX parse instruction

 

It doesn't work in VM370. Jason won't release the source so I can't fix. The library is full of OS macros which breaks many things we do on VM

Dave


On Tue, 18 Oct 2022, 03:55 Martin Scheffler, <San-Lorenzo@...> wrote:
On Tue, Oct 18, 2022 at 02:39 AM, Mark A. Stevens wrote:
Makes me wonder if the VM group should consider using JCC rather than GCC. Do you have? Pros/Cons for these two compilers someplace?

License/ User Agreement

From help/help.htm

JCC and the JCC-Library is not free software.


Re: Possible bug in BREXX parse instruction

 

On Tue, Oct 18, 2022 at 02:39 AM, Mark A. Stevens wrote:
Makes me wonder if the VM group should consider using JCC rather than GCC. Do you have? Pros/Cons for these two compilers someplace?

License/ User Agreement

From help/help.htm

JCC and the JCC-Library is not free software.


Re: Possible bug in BREXX parse instruction

 

On Sun, Oct 16, 2022 at 11:11 PM, Mike Gro?mann wrote:
Both versions, Bobs VM and my MVS, are forks
of this original one. But we dropped GCC as?
our compiler and switched to JCC.
Makes me wonder if the VM group should consider using JCC rather than GCC. Do you have? Pros/Cons for these two compilers someplace?

?... Mark S.
Just what we need. one more thing to do.


Re: Three questions about VM/CE (Left, middle, and right field question)

 

-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of Dennis Boone
Sent: 17 October 2022 21:35
To: [email protected]
Subject: Re: [h390-vm] Three questions about VM/CE (Left, middle, and right
field question)

> The IBM ¡°FAL¡± code which used a service machine to handle the > hardware,
and then the user VMs used VMCF to pass the TCPIP traffic > to the service VM

Pretty sure all of the versions I met used IUCV, not VMCF.
You youngster. The original version used VMCF but IUCV was added as an option later.


De
Dave


Re: Three questions about VM/CE (Left, middle, and right field question)

 

The IBM ¡°FAL¡± code which used a service machine to handle the
> hardware, and then the user VMs used VMCF to pass the TCPIP traffic
> to the service VM

Pretty sure all of the versions I met used IUCV, not VMCF.

De


Re: Three questions about VM/CE (Left, middle, and right field question)

 

¿ªÔÆÌåÓý

Bertram,

?

I think it would be challenging to get any ¡°C¡± code similar the ¡°Pi¡± DMR code to run on zVM where you have a modern ¡°C¡± compiler.

The ¡°C¡± compiler in VM/370 is rather old, and the library is the C90 library so is missing many of the routines modern code requires.

In addition, you are limited to a 16Mb virtual machine, unless you start with fiddles.

(My calls are G4UGM and EA7KAE)

?

As other have said adding devices isn¡¯t so hard so long as it approximates to an existing device. Its common to use a pair of devices as many of the device VM supports are treated as semi-half duples.

So when I worked on and X25 package for VM we used a Series/1 which emulated a pair of 3270 screens to pass the X25 traffic into VM

?

As others have said, there is no TCPIP support in VM/370 CE There are fiddles but I am not sure how well these work, I have never tried them.

The IBM ¡°FAL¡± code which used a service machine to handle the hardware, and then the user VMs used VMCF to pass the TCPIP traffic to the service VM

In theory this approach could be used in VM/370 CE as it has VMCF support but it¡¯s a lot of code to write.

?

Whilst there are line-by-line browsers I have found them pretty much un-usable on the modern internet¡­¡­

?

Dave

?

?

From: [email protected] <[email protected]> On Behalf Of Bertram Moshier
Sent: 17 October 2022 09:21
To: [email protected]
Subject: [h390-vm] Three questions about VM/CE (Left, middle, and right field question)

?

Hi,

?

I have three questions.? As a side note, I'm a ham radio operator (WB8ERT) and use DMR.

?

My left field question would be for fellow ham radio operators.? I understand getting a PI-Raspberry to operate as? a transmit and receive DMR.? Just for fun, I'm wondering about doing the same using VM.? Is it possible, in theory?? I think it should be possible.? The DMR code is in C.? SIO to send and receive and yet . . .

?

Middle question:? What is involved in getting herc to see a new device that would then be seen by VM?? I know from my work at Cray Research, Inc, creating hardware for S/370 systems is possible.? We had two hardware devices to talk to a Cray.? One looked like a CTC to the S/370 and the other was by Network Systems.? To our Station software, they looked very similar.? I also worked on the Seagate STK4400 to Cray-1 and Cray-2 interface (using tape connected to the Cray and a 3270 hardware (as I remember) to control the STK for S/370 systems.

?

Right field:? Is there an HTTPD for VM/CE? By this I mean a HTTP server for VM/CE?? OH, is it possible again on VM/CE to run a line by line browser.? (Yeah, I remember using the Internet using a line by line browser (but not on VM).? We connected to an Unix system for our Internet work.

?

Thank you for your time and consideration.

?


Re: Another Time Zone Question (Sorta)

 

¿ªÔÆÌåÓý

This is how we did it when we were running VM/370. We had ASSEMBLE, OLD, NEW versions of DMKRIO and DMKSNT. For DMKSYS, we had ASSEMBLE, EST, EDT. We just copied the right (OLD/NEW) file into ASSEMBLE and built the nucleus. When we made the switch to SEPP, then we also switched to using new update files for EVERY change, even when EST->EDT was the same this year as last year. It was a little tiresome at first but we started doing more UPDATEs for our own application code.

/Tom Kern

On 10/15/2022 6:34 PM, Bob Polmanter wrote:

Jim,

I definitely would not use update files and AUX files in order to manage DMKSYS for the purposes of a time zone change.? I realize that VM/CE may be more or less set up for that, but it doesn't mean you have to use it.? My stance might irritate some but it is just overkill for the purpose.

Keep in mind that the three user modifiable CP modules DMKSYS, DMKRIO, and DMKSNT are meant to be customized for the specific installation.? There is no need to preserve the "untouched original IBM code" for these three modules.? It is expected that a system programmer will alter these three files.

If you like, you can save a copy of the original IBM versions on another minidisk, but in all seriousness I would directly edit any of those three as changes are needed, and simply reassemble them as usual using VMFASM DMKxxx DMKLCL.?? I wouldn't use any update or AUX files for these three.? The only possible case I could see would be that update files do provide a sort of history of changes; if that is important to you then use them.? In lieu of that, you could also keep track of important changes with comments in these three modules as well, as you see fit.

I'm practicing what I am preaching here still to this day, just as I did on my real VM system on real hardware for years, back in the day.

Regards,
Bob


Re: Possible bug in BREXX parse instruction

 

On Mon, Oct 17, 2022 at 02:35 PM, Mike Gro?mann wrote:
The compiler, which unfortunately also processes its instructions sequentially,?
would have to collect all literals first
That's the way Regina works.

?* When the anchor-points are determined, the variables are filled?????? ?
?* in with the parts of the string that comes between each anchor.?????? ?
?* Here is an example:?????????????????????????????????????????????????? ?
?*?????????????????????????????????????????????????????????????????????? ?
?*??? parse value 'That is a parse string!' with a b
'is' c d 'i' e????? ?
?*?????????????????????????????????????????????????????????????????????? ?
?* In this example, there are four anchors in the string, the two??????? ?
?* patterns 'is' and 'i', and the two implicit anchors start-of-string?? ?
?* and end-of-string. They anchor particular locations in the string???? ?
?* to the lists of variables: (a b), (c d) and (e). At the first level?? ?
?* the anchors are found and the text between them are deternmined?????? ?
?* (SOS=Start-Of-String, EOS=End-Of-String):???????????????????????????? ?
?*?????????????????????????????????????????????????????????????????????? ?
?*??????????????????????????? That is a parse string!??????????????????? ?
?*??? anchors??????????? (SOS)-----is------------i---(EOS)?????????????? ?
?*??? strings in-between????? <a b>? <<<<c d>>>>> <e>??????????????????? ?
?*?????????????????????????????????????????????????????????????????????? ?


Re: Possible bug in BREXX parse instruction

 

Hi Mike,
I am?not a bit mad, and I am sorry I gave that impression.

I agree that the literals should be identified first, because they must be
used to separate the string being parsed into smaller sections that
are processed separately. I think you have the right approach,
even if I don't understand?the details of the control flow.
Bob

On Mon, Oct 17, 2022 at 8:35 AM Mike Gro?mann <mike.grossmann.de@...> wrote:
Hey Bob,


as you know my English is not the best. :) So if I misunderstood something, please don't be angry with me.

I know relatively exactly where the problem lies. I just don't have a solution.

I'll try to outline the problem.

The internal compiler processes the template and puts the following statements on the stack:


trest = '() trial 1'
Stck:0 0 NEWCLAUSE
?Stck:0 8 CREATE "TREST"
?Stck:1 24 PUSH "() trial 1"
?Stck:2 48 COPY "() trial 1"

say 'test of () trial 1'
Stck:0 56 NEWCLAUSE
?Stck:0 64 PUSH "test of () trial 1"
?Stck:1 88 SAY "test of () trial 1"

s = dotell(trest)
Stck:0 96 NEWCLAUSE
?Stck:0 104 CREATE "S"
?Stck:1 120 LOAD "TREST"
?Stck:2 144 CALL DOTELL NoArgs=1, Exist=1 Type=other
?Stck:2 248 LOADARG "() trial 1"
?Stck:3 264 COPY2TMP "() trial 1"
?Stck:3 272 PARSE "() trial 1"
?Stck:3 280 PUSH "("
?Stck:4 304 TR_LIT "("

// TR_LIT is trying to set break_end to a reasonable value based on the literal position
DBG> tr_lit: ToParse='() trial 1' - Lit='('
DBG> tr_lit exit) data_start = 1
DBG> tr_lit exit) break_start = 1
DBG> tr_lit exit) break_end = 2

?Stck:3 312 CREATE "WITH"
?Stck:4 328 PVAR

// Here you can see, that the "WITH" keyword is handled as variable, not as keyword.
// "WITH" keyword is not allowed at this context.
DBG> OP_PVAR: BreakStart: 1
DBG> OP_PVAR: BreakEnd: 2
DBG> OP_PVAR: DataStart: 1
DBG> OP_PVAR: DataEnd: 1

?Stck:3 344 TR_SPACE

DBG> tr_space 1) data_start = 1
DBG> tr_space 1) break_start = 1
DBG> tr_space 1) break_end = 2
DBG> tr_space 2) data_start = 2
DBG> tr_space 2) break_start = 3
DBG> tr_space 2) break_end = 4

?Stck:3 352 CREATE "IN1"
?Stck:4 368 PVAR

// OP_PVAR operation will extract a value from the parse string into the in1 variable
DBG> OP_PVAR: BreakStart: 3
DBG> OP_PVAR: BreakEnd: 4
DBG> OP_PVAR: DataStart: 2
DBG> OP_PVAR: DataEnd: 3
DBG> OP_PVAR: extracting value from '() trial 1' ?(2 to 3)

?Stck:3 384 PUSH ")"
?Stck:4 408 TR_LIT ")"

// TR_LIT is trying to set break_end to a reasonable value based on the literal position
DBG> tr_lit: ToParse='() trial 1' - Lit=')'
DBG> tr_lit 1) pattern_pos = 0
DBG> tr_lit 2) data_start = 4
DBG> tr_lit 2) break_start = 11
DBG> tr_lit 2) break_end = 11

?Stck:3 416 CREATE "IN2"
?Stck:4 432 PVAR

// OP_PVAR operation will extract a value from the parse string into the in2 variablev
DBG> OP_PVAR: BreakStart: 11
DBG> OP_PVAR: BreakEnd: 11
DBG> OP_PVAR: DataStart: 4
DBG> OP_PVAR: DataEnd: 11
DBG> OP_PVAR: extracting value from '() trial 1' ?(4 to 11)

?Stck:3 448 TR_END
?Stck:3 456 CREATE "OUTER"
?Stck:4 472 PVAR

// OP_PVAR operation will extract a value from the parse string into the outer variable
DBG> OP_PVAR: BreakStart: 11
DBG> OP_PVAR: BreakEnd: 11
DBG> OP_PVAR: DataStart: 11
DBG> OP_PVAR: DataEnd: 11

?Stck:3 488 POP

Stck:2 504 NEWCLAUSE
?...
?...
?


So, the compiler puts the template on the stack with the information that there must be two variables between two literals.?
The interpreter knows now, which operations (TR_LIT and TR_SPACE and PVALUE) must be executed,?
in order to bring the values from the input string into the variables. Unfortunately, the parsing algorithm cannot handle?
this, if the number of expected variables does not match the "words" in the input string.


To bring it to the point. The compiler, which unfortunately also processes its instructions sequentially,?
would have to collect all literals first, and only then place the template on the stack.?
Then one would have the possibility in the interpreter to process the data, as you described it.


If this makes any sense to you. :)



Mike



Am 17.10.2022 um 13:19 schrieb Bob Bolch <Bob@...>:

Hi Mike,
I don't know where the bad code is, but I expect it is probably in the interpre.c piece.

There is no code that I could find to handle literals in the parse template.?

For example, if we have a string to parse like this one?defined in a variable 'x':

a b c ( d e f? g? h i? j? k?

And a parse template like:

Parse var x one '(' two three four five? ' g'? six?


REXX should:


1. Find the literals in the template. Here they are '(' and 'g'.

2. Separate the string into the literals and the parts that are not literals. Those are:

String:? a b c
Literal: (
String: d e f
Literal: g
String: h i j k

3. We should then assign the template variables, as follows:

Assign value 'a b c' to variable 'one'.
Assign value 'd' to variable 'two'.
Assign value 'e' to variable 'three'.
Assign value 'f' to variable 'four'.
Assign value '' to variable 'five'.
Assign value 'h i j k' to variable 'six'.

t test exec? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
/* */ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
address COMMAND ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
x = 'a b c ( d e f ?g ?h i ?j ?k' ? ? ? ? ? ? ? ? ?
Parse var x one '(' two three four five ?' g' ?six?
say one ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
say two ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
say three ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
say four ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
say five ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
say six ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Ready; T=0.01/0.01 07:12:13?



? ? ? ? ? ? test? ? ? ? ? ? ? ? ? ? ? ??
a b c ? ? ? ? ? ? ? ? ? ? ??
d ? ? ? ? ? ? ? ? ? ? ? ? ??
e ? ? ? ? ? ? ? ? ? ? ? ? ??
f ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ??
? h i ?j ?k ? ? ? ? ? ? ? ??
Ready; T=0.01/0.01 07:12:34? ?

The key here is to parse subsections of the string by first separating?them,
using the literals found in the parse template.? ?

BREXX doesn't do that on VMCE, or MVS, or in the first implementation by the?
developer. BREXX produces:? ?

test ? ? ? ? ? ? ? ? ? ? ? ?
a b c ? ? ? ? ? ? ? ? ? ? ??
d ? ? ? ? ? ? ? ? ? ? ? ? ??
e ? ? ? ? ? ? ? ? ? ? ? ? ??
f ? ? ? ? ? ? ? ? ? ? ? ? ??
g ?h i ?j ?k ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ??
Ready; T=0.02/0.02 07:16:28

because it does not process the literals in the parse template correctly.

Bob Bolch?



On Sun, Oct 16, 2022, 1:25 PM Mike Gro?mann <mike.grossmann.de@...> wrote:
Bob,

did you came closer to a c file, where the problem may occur?
I just reviewed my old mail, but can¡¯t really remember. Something with
not finding the closing ?)¡°. Where do you think is the bug, I will
review the code.


Mike ?

Am 16.10.2022 um 19:18 schrieb Bob Bolch <Bob@...>:

Yes. The problem is that BREXX doesn't handle literals in the parse template!!
I just don't know enough C to find and fix it.
Bob Bolch

On Sun, Oct 16, 2022, 12:46 PM Martin Scheffler <San-Lorenzo@...> wrote:
Comparing with results from real iron (z/VM 6.4):

Ready; T=0.01/0.01 10:46:48?????????????????????????????????????? ?
?DAVEMTST???????????????????????????????????????????????????????? ?
z/VM Version 6 Release 4.0, service level 1701 (64-bit)?????????? ?
Generated at 04/24/17 16:30:42 EST??????????????????????????????? ?
IPL at 10/08/22 07:37:33 EST????????????????????????????????????? ?
CMS Level 28, Service Level 1701????????????????????????????????? ?
REXX370 4.02 01 Dec 1998????????????????????????????????????????? ?
test of () trial 1??????????????????????????????????????????????? ?
in1 = //????????????????????????????????????????????????????????? ?
in2 = //????????????????????????????????????????????????????????? ?
outer=/ trial 1/????????????????????????????????????????????????? ?
test of (1) trial 2?????????????????????????????????????????????? ?
in1 = /1/???????????????????????????????????????????????????????? ?
in2 = //????????????????????????????????????????????????????????? ?
outer=/ trial 2/????????????????????????????????????????????????? ?
test of (1 3) trial 3???????????????????????????????????????????? ?
in1 = /1/???????????????????????????????????????????????????????? ?
in2 = /3/???????????????????????????????????????????????????????? ?
outer=/ trial3/?????????????????????????????????????????????????? ?
Ready; T=0.01/0.01 10:46:51?????????????????????????????????????? ?
????????????????????????????????????????????????????????????????? ?
????????????????????????????????????????????????????????????????? ?
Written new file: DAVEMTST EXEC A1??????????????????????????????? ?
Ready; T=0.09/0.23 15:58:32?????????????????????????????????????? ?
DAVEMTST????????????????????????????????????????????????????????? ?
SYSTEM 4381-A???????????????????????????????????????????????????? ?
VM/370 Community Edition Version? 1 Release? 1.2 10/11/22 08:44:05?
VM/370 CMS Community Edition Version 1 Release 1.2??????????????? ?
CMS bREXX 1.0.1 Jul? 5 2022?????????????????????????????????????? ?
test of () trial 1??????????????????????????????????????????????? ?
in1 = /)/???????????????????????????????????????????????????????? ?
in2 = /trial 1/?????????????????????????????????????????????????? ?
outer=//????????????????????????????????????????????????????????? ?
test of (1) trial 2?????????????????????????????????????????????? ?
in1 = /1)/??????????????????????????????????????????????????????? ?
in2 = /trial 2/?????????????????????????????????????????????????? ?
outer=//????????????????????????????????????????????????????????? ?
test of (1 3) trial 3???????????????????????????????????????????? ?
in1 = /1/???????????????????????????????????????????????????????? ?
in2 = /3/???????????????????????????????????????????????????????? ?
outer=/ trial3/?????????????????????????????????????????????????? ?
Ready; T=0.08/0.12 15:58:38?????????????????????????????????????? ?
????????????????????????????????????????????????????????????????? ?
*** side by side:???????????????????????????????????????????????? ?
????????????????????????????????????????????????????????????????? ?
REXX370 4.02 01 Dec 1998? CMS bREXX 1.0.1 Jul? 5 2022???????????? ?
test of () trial 1??????? test of () trial 1????????????????????? ?
in1 = //????????????????? in1 = /)/?????????????????????????????? ?
in2 = //????????????????? in2 = /trial 1/???????????????????????? ?
outer=/?trial 1/????????? outer=//??????????????????????????????? ?
test of (1) trial 2?????? test of (1) trial 2???????????????????? ?
in1 = /1/???????????????? in1 = /1)/????????????????????????????? ?
in2 = //????????????????? in2 = /trial 2/???????????????????????? ?
outer=/?trial 2/????????? outer=//??????????????????????????????? ?
test of (1 3) trial 3???? test of (1 3) trial 3?????????????????? ?
in1 = /1/???????????????? in1 = /1/?????????????????????????????? ?
in2 = /3/???????????????? in2 = /3/?????????????????????????????? ?
outer=/ trial3/?????????? outer=/ trial3/???????????????????????? ?
????????????????????????????????????????????????????????????????? ?
?DAVEMTST EXEC???? A1? F 80? Trunc=80 Size=22 Line=11 Col=1 Alt=0 ?
====>???????????????????????????????????????????????????????????? ?
????0 * * * Top of File * * *???????????????????????????????????? ?
????1 /* test parse */??????????????????????????????????????????? ?
????2 "q cplevel"???????????????????????????????????????????????? ?
????3 "q cmslevel"??????????????????????????????????????????????? ?
????4 parse version v???????????????????????????????????????????? ?
????5 say v?????????????????????????????????????????????????????? ?
????6?? trest = '() trial 1'????????????????????????????????????? ?
????7?? say 'test of () trial 1'????????????????????????????????? ?
????8?? s = dotell(trest)???????????????????????????????????????? ?
????9?? trest = '(1) trial 2'???????????????????????????????????? ?
???10?? say 'test of (1) trial 2'???????????????????????????????? ?
???11?? s = dotell(trest)???????????????????????????????????????? ?
???12?? trest = '(1 3) trial3'??????????????????????????????????? ?
???13?? say 'test of (1 3) trial 3'?????????????????????????????? ?
???14?? s = dotell(trest)???????????????????????????????????????? ?
???15?? exit????????????????????????????????????????????????????? ?
???16???????????????????????????????????????????????????????????? ?
???17 dotell:???????????????????????????????????????????????????? ?
???18?? parse arg with '(' in1 in2 ')' outer????????????????????? ?
???19?? say 'in1 = /'in1'/'?????????????????????????????????????? ?
???20?? say 'in2 = /'in2'/'?????????????????????????????????????? ?
???21?? say 'outer=/'outer'/'???????????????????????????????????? ?
???22?? return 0????????????????????????????????????????????????? ?
???23 * * * End of File * * *???????????????????????????????????? ?







Re: Possible bug in BREXX parse instruction

 

¿ªÔÆÌåÓý

Hey Bob,


as you know my English is not the best. :) So if I misunderstood something, please don't be angry with me.

I know relatively exactly where the problem lies. I just don't have a solution.

I'll try to outline the problem.

The internal compiler processes the template and puts the following statements on the stack:


trest = '() trial 1'
Stck:0 0 NEWCLAUSE
?Stck:0 8 CREATE "TREST"
?Stck:1 24 PUSH "() trial 1"
?Stck:2 48 COPY "() trial 1"

say 'test of () trial 1'
Stck:0 56 NEWCLAUSE
?Stck:0 64 PUSH "test of () trial 1"
?Stck:1 88 SAY "test of () trial 1"

s = dotell(trest)
Stck:0 96 NEWCLAUSE
?Stck:0 104 CREATE "S"
?Stck:1 120 LOAD "TREST"
?Stck:2 144 CALL DOTELL NoArgs=1, Exist=1 Type=other
?Stck:2 248 LOADARG "() trial 1"
?Stck:3 264 COPY2TMP "() trial 1"
?Stck:3 272 PARSE "() trial 1"
?Stck:3 280 PUSH "("
?Stck:4 304 TR_LIT "("

// TR_LIT is trying to set break_end to a reasonable value based on the literal position
DBG> tr_lit: ToParse='() trial 1' - Lit='('
DBG> tr_lit exit) data_start = 1
DBG> tr_lit exit) break_start = 1
DBG> tr_lit exit) break_end = 2

?Stck:3 312 CREATE "WITH"
?Stck:4 328 PVAR

// Here you can see, that the "WITH" keyword is handled as variable, not as keyword.
// "WITH" keyword is not allowed at this context.
DBG> OP_PVAR: BreakStart: 1
DBG> OP_PVAR: BreakEnd: 2
DBG> OP_PVAR: DataStart: 1
DBG> OP_PVAR: DataEnd: 1

?Stck:3 344 TR_SPACE

DBG> tr_space 1) data_start = 1
DBG> tr_space 1) break_start = 1
DBG> tr_space 1) break_end = 2
DBG> tr_space 2) data_start = 2
DBG> tr_space 2) break_start = 3
DBG> tr_space 2) break_end = 4

?Stck:3 352 CREATE "IN1"
?Stck:4 368 PVAR

// OP_PVAR operation will extract a value from the parse string into the in1 variable
DBG> OP_PVAR: BreakStart: 3
DBG> OP_PVAR: BreakEnd: 4
DBG> OP_PVAR: DataStart: 2
DBG> OP_PVAR: DataEnd: 3
DBG> OP_PVAR: extracting value from '() trial 1' ?(2 to 3)

?Stck:3 384 PUSH ")"
?Stck:4 408 TR_LIT ")"

// TR_LIT is trying to set break_end to a reasonable value based on the literal position
DBG> tr_lit: ToParse='() trial 1' - Lit=')'
DBG> tr_lit 1) pattern_pos = 0
DBG> tr_lit 2) data_start = 4
DBG> tr_lit 2) break_start = 11
DBG> tr_lit 2) break_end = 11

?Stck:3 416 CREATE "IN2"
?Stck:4 432 PVAR

// OP_PVAR operation will extract a value from the parse string into the in2 variablev
DBG> OP_PVAR: BreakStart: 11
DBG> OP_PVAR: BreakEnd: 11
DBG> OP_PVAR: DataStart: 4
DBG> OP_PVAR: DataEnd: 11
DBG> OP_PVAR: extracting value from '() trial 1' ?(4 to 11)

?Stck:3 448 TR_END
?Stck:3 456 CREATE "OUTER"
?Stck:4 472 PVAR

// OP_PVAR operation will extract a value from the parse string into the outer variable
DBG> OP_PVAR: BreakStart: 11
DBG> OP_PVAR: BreakEnd: 11
DBG> OP_PVAR: DataStart: 11
DBG> OP_PVAR: DataEnd: 11

?Stck:3 488 POP

Stck:2 504 NEWCLAUSE
?...
?...
?


So, the compiler puts the template on the stack with the information that there must be two variables between two literals.?
The interpreter knows now, which operations (TR_LIT and TR_SPACE and PVALUE) must be executed,?
in order to bring the values from the input string into the variables. Unfortunately, the parsing algorithm cannot handle?
this, if the number of expected variables does not match the "words" in the input string.


To bring it to the point. The compiler, which unfortunately also processes its instructions sequentially,?
would have to collect all literals first, and only then place the template on the stack.?
Then one would have the possibility in the interpreter to process the data, as you described it.


If this makes any sense to you. :)



Mike



Am 17.10.2022 um 13:19 schrieb Bob Bolch <Bob@...>:

Hi Mike,
I don't know where the bad code is, but I expect it is probably in the interpre.c piece.

There is no code that I could find to handle literals in the parse template.?

For example, if we have a string to parse like this one?defined in a variable 'x':

a b c ( d e f? g? h i? j? k?

And a parse template like:

Parse var x one '(' two three four five? ' g'? six?


REXX should:


1. Find the literals in the template. Here they are '(' and 'g'.

2. Separate the string into the literals and the parts that are not literals. Those are:

String:? a b c
Literal: (
String: d e f
Literal: g
String: h i j k

3. We should then assign the template variables, as follows:

Assign value 'a b c' to variable 'one'.
Assign value 'd' to variable 'two'.
Assign value 'e' to variable 'three'.
Assign value 'f' to variable 'four'.
Assign value '' to variable 'five'.
Assign value 'h i j k' to variable 'six'.

t test exec? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
/* */ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
address COMMAND ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
x = 'a b c ( d e f ?g ?h i ?j ?k' ? ? ? ? ? ? ? ? ?
Parse var x one '(' two three four five ?' g' ?six?
say one ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
say two ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
say three ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
say four ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
say five ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
say six ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Ready; T=0.01/0.01 07:12:13?



? ? ? ? ? ? test? ? ? ? ? ? ? ? ? ? ? ??
a b c ? ? ? ? ? ? ? ? ? ? ??
d ? ? ? ? ? ? ? ? ? ? ? ? ??
e ? ? ? ? ? ? ? ? ? ? ? ? ??
f ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ??
? h i ?j ?k ? ? ? ? ? ? ? ??
Ready; T=0.01/0.01 07:12:34? ?

The key here is to parse subsections of the string by first separating?them,
using the literals found in the parse template.? ?

BREXX doesn't do that on VMCE, or MVS, or in the first implementation by the?
developer. BREXX produces:? ?

test ? ? ? ? ? ? ? ? ? ? ? ?
a b c ? ? ? ? ? ? ? ? ? ? ??
d ? ? ? ? ? ? ? ? ? ? ? ? ??
e ? ? ? ? ? ? ? ? ? ? ? ? ??
f ? ? ? ? ? ? ? ? ? ? ? ? ??
g ?h i ?j ?k ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ??
Ready; T=0.02/0.02 07:16:28

because it does not process the literals in the parse template correctly.

Bob Bolch?



On Sun, Oct 16, 2022, 1:25 PM Mike Gro?mann <mike.grossmann.de@...> wrote:
Bob,

did you came closer to a c file, where the problem may occur?
I just reviewed my old mail, but can¡¯t really remember. Something with
not finding the closing ?)¡°. Where do you think is the bug, I will
review the code.


Mike ?

Am 16.10.2022 um 19:18 schrieb Bob Bolch <Bob@...>:

Yes. The problem is that BREXX doesn't handle literals in the parse template!!
I just don't know enough C to find and fix it.
Bob Bolch

On Sun, Oct 16, 2022, 12:46 PM Martin Scheffler <San-Lorenzo@...> wrote:
Comparing with results from real iron (z/VM 6.4):

Ready; T=0.01/0.01 10:46:48?????????????????????????????????????? ?
?DAVEMTST???????????????????????????????????????????????????????? ?
z/VM Version 6 Release 4.0, service level 1701 (64-bit)?????????? ?
Generated at 04/24/17 16:30:42 EST??????????????????????????????? ?
IPL at 10/08/22 07:37:33 EST????????????????????????????????????? ?
CMS Level 28, Service Level 1701????????????????????????????????? ?
REXX370 4.02 01 Dec 1998????????????????????????????????????????? ?
test of () trial 1??????????????????????????????????????????????? ?
in1 = //????????????????????????????????????????????????????????? ?
in2 = //????????????????????????????????????????????????????????? ?
outer=/ trial 1/????????????????????????????????????????????????? ?
test of (1) trial 2?????????????????????????????????????????????? ?
in1 = /1/???????????????????????????????????????????????????????? ?
in2 = //????????????????????????????????????????????????????????? ?
outer=/ trial 2/????????????????????????????????????????????????? ?
test of (1 3) trial 3???????????????????????????????????????????? ?
in1 = /1/???????????????????????????????????????????????????????? ?
in2 = /3/???????????????????????????????????????????????????????? ?
outer=/ trial3/?????????????????????????????????????????????????? ?
Ready; T=0.01/0.01 10:46:51?????????????????????????????????????? ?
????????????????????????????????????????????????????????????????? ?
????????????????????????????????????????????????????????????????? ?
Written new file: DAVEMTST EXEC A1??????????????????????????????? ?
Ready; T=0.09/0.23 15:58:32?????????????????????????????????????? ?
DAVEMTST????????????????????????????????????????????????????????? ?
SYSTEM 4381-A???????????????????????????????????????????????????? ?
VM/370 Community Edition Version? 1 Release? 1.2 10/11/22 08:44:05?
VM/370 CMS Community Edition Version 1 Release 1.2??????????????? ?
CMS bREXX 1.0.1 Jul? 5 2022?????????????????????????????????????? ?
test of () trial 1??????????????????????????????????????????????? ?
in1 = /)/???????????????????????????????????????????????????????? ?
in2 = /trial 1/?????????????????????????????????????????????????? ?
outer=//????????????????????????????????????????????????????????? ?
test of (1) trial 2?????????????????????????????????????????????? ?
in1 = /1)/??????????????????????????????????????????????????????? ?
in2 = /trial 2/?????????????????????????????????????????????????? ?
outer=//????????????????????????????????????????????????????????? ?
test of (1 3) trial 3???????????????????????????????????????????? ?
in1 = /1/???????????????????????????????????????????????????????? ?
in2 = /3/???????????????????????????????????????????????????????? ?
outer=/ trial3/?????????????????????????????????????????????????? ?
Ready; T=0.08/0.12 15:58:38?????????????????????????????????????? ?
????????????????????????????????????????????????????????????????? ?
*** side by side:???????????????????????????????????????????????? ?
????????????????????????????????????????????????????????????????? ?
REXX370 4.02 01 Dec 1998? CMS bREXX 1.0.1 Jul? 5 2022???????????? ?
test of () trial 1??????? test of () trial 1????????????????????? ?
in1 = //????????????????? in1 = /)/?????????????????????????????? ?
in2 = //????????????????? in2 = /trial 1/???????????????????????? ?
outer=/?trial 1/????????? outer=//??????????????????????????????? ?
test of (1) trial 2?????? test of (1) trial 2???????????????????? ?
in1 = /1/???????????????? in1 = /1)/????????????????????????????? ?
in2 = //????????????????? in2 = /trial 2/???????????????????????? ?
outer=/?trial 2/????????? outer=//??????????????????????????????? ?
test of (1 3) trial 3???? test of (1 3) trial 3?????????????????? ?
in1 = /1/???????????????? in1 = /1/?????????????????????????????? ?
in2 = /3/???????????????? in2 = /3/?????????????????????????????? ?
outer=/ trial3/?????????? outer=/ trial3/???????????????????????? ?
????????????????????????????????????????????????????????????????? ?
?DAVEMTST EXEC???? A1? F 80? Trunc=80 Size=22 Line=11 Col=1 Alt=0 ?
====>???????????????????????????????????????????????????????????? ?
????0 * * * Top of File * * *???????????????????????????????????? ?
????1 /* test parse */??????????????????????????????????????????? ?
????2 "q cplevel"???????????????????????????????????????????????? ?
????3 "q cmslevel"??????????????????????????????????????????????? ?
????4 parse version v???????????????????????????????????????????? ?
????5 say v?????????????????????????????????????????????????????? ?
????6?? trest = '() trial 1'????????????????????????????????????? ?
????7?? say 'test of () trial 1'????????????????????????????????? ?
????8?? s = dotell(trest)???????????????????????????????????????? ?
????9?? trest = '(1) trial 2'???????????????????????????????????? ?
???10?? say 'test of (1) trial 2'???????????????????????????????? ?
???11?? s = dotell(trest)???????????????????????????????????????? ?
???12?? trest = '(1 3) trial3'??????????????????????????????????? ?
???13?? say 'test of (1 3) trial 3'?????????????????????????????? ?
???14?? s = dotell(trest)???????????????????????????????????????? ?
???15?? exit????????????????????????????????????????????????????? ?
???16???????????????????????????????????????????????????????????? ?
???17 dotell:???????????????????????????????????????????????????? ?
???18?? parse arg with '(' in1 in2 ')' outer????????????????????? ?
???19?? say 'in1 = /'in1'/'?????????????????????????????????????? ?
???20?? say 'in2 = /'in2'/'?????????????????????????????????????? ?
???21?? say 'outer=/'outer'/'???????????????????????????????????? ?
???22?? return 0????????????????????????????????????????????????? ?
???23 * * * End of File * * *???????????????????????????????????? ?







Re: Three questions about VM/CE (Left, middle, and right field question)

 

¿ªÔÆÌåÓý

The answer to your middle question is A LOT of work. ?All of it in C and coded to Hercules internal constructs.

However, there is no need to create a "new" device for Internet connectivity. ?The issue is not Hercules, but the guest OS (VM I am assuming) lacks TCP/IP intelligence. ?At this vintage of guest operating system, Hercules offers the TCPIP instruction. ?It allows non-privileged access to the host's native TCP interface for connecting to a host socket. ?This interface has been used to support TCP on MVS. ?What VM/370 work would be required to allow a CMS virtual machine to do the same is an unanswered question.

There are a number of "devices" already supported by Hercules for IP connectivity. ?Again, this vintage of VM knows nothing about these Hercules devices, per se. ?Someone who understands the internals of VM/370 would be able to assist with connecting such a device to a CMS guest. ?Some of these device uses CTC channel protocol that VM/370 understands. ?I think the work there is much less. ?Getting CMS the "intelligence" to use the CTC device is another challenge. ?The MVS programs that use the TCPIP instruction might provide a foundation for coding a server or client program.

Just a few thoughts on your "middle" question.

Harold Grovesteen

On Mon, 2022-10-17 at 03:21 -0500, Bertram Moshier wrote:
Hi,

I have three questions.? As a side note, I'm a ham radio operator (WB8ERT) and use DMR.

My left field question would be for fellow ham radio operators.? I understand getting a PI-Raspberry to operate as? a transmit and receive DMR.? Just for fun, I'm wondering about doing the same using VM.? Is it possible, in theory?? I think it should be possible.? The DMR code is in C.? SIO to send and receive and yet . . .

Middle question:? What is involved in getting herc to see a new device that would then be seen by VM?? I know from my work at Cray Research, Inc, creating hardware for S/370 systems is possible.? We had two hardware devices to talk to a Cray.? One looked like a CTC to the S/370 and the other was by Network Systems.? To our Station software, they looked very similar.? I also worked on the Seagate STK4400 to Cray-1 and Cray-2 interface (using tape connected to the Cray and a 3270 hardware (as I remember) to control the STK for S/370 systems.

Right field:? Is there an HTTPD for VM/CE? By this I mean a HTTP server for VM/CE?? OH, is it possible again on VM/CE to run a line by line browser.? (Yeah, I remember using the Internet using a line by line browser (but not on VM).? We connected to an Unix system for our Internet work.

Thank you for your time and consideration.