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 ? ?
toggle quoted message
Show quoted text
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? ? 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. 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.
toggle quoted message
Show quoted text
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
toggle quoted message
Show quoted text
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
toggle quoted message
Show quoted text
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.
|
|
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.VMARCdiff 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
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
toggle quoted message
Show quoted text
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)
toggle quoted message
Show quoted text
-----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 ? ?
toggle quoted message
Show quoted text
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:
toggle quoted message
Show quoted text
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
toggle quoted message
Show quoted text
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:
Stck:0 0 NEWCLAUSE ?Stck:0 8 CREATE "TREST" ?Stck:1 24 PUSH "() trial 1" ?Stck:2 48 COPY "() trial 1"
Stck:0 56 NEWCLAUSE ?Stck:0 64 PUSH "test of () trial 1" ?Stck:1 88 SAY "test of () trial 1"
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,
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 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:
Stck:0 0 NEWCLAUSE ?Stck:0 8 CREATE "TREST" ?Stck:1 24 PUSH "() trial 1" ?Stck:2 48 COPY "() trial 1"
Stck:0 56 NEWCLAUSE ?Stck:0 64 PUSH "test of () trial 1" ?Stck:1 88 SAY "test of () trial 1"
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
toggle quoted message
Show quoted text
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,
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 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
toggle quoted message
Show quoted text
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.
|