Keyboard Shortcuts
ctrl + shift + ? :
Show all keyboard shortcuts
ctrl + g :
Navigate to a group
ctrl + shift + f :
Find
ctrl + / :
Quick actions
esc to dismiss
Likes
- H390-MVS
- Messages
Search
Re: Whats the best way to transfer dasd from z/os to Hercules
SHOWMVS uses a technique that doesn't require jump support, see the P$BEGIN macro. It will increase the overall CSECT size but might be a decent alternative to an extensive rewrite.
toggle quoted message
Show quoted text
I did a backport to MVS38j which includes an assembler listing (showmvs.list) made with the Dignus assembler due to the code needing more than just ASMF. I don't believe Dignus offers the hobbyist license I used anymore, bu more modern assemblers than ASMF should be fine. I don't recall trying ASMG, something even more modern may be needed. There's also a STRING.MAC that sounds a bit like #MSG. Hope that helps. Jim On 1/20/25 2:18 AM, Andrew via groups.io wrote:
I believe I know where/why it's going wrong with anything greater than 3390-27. In my test with a 3390-54, the size of the L1TAB needed for 982800 tracks is 30720. Adding the 1024 bytes for the header gives 31744 bytes. CCKDDU64 does not seem to deal with this, when this first record is greater the the lrecl/blksize of 16384, and it looks like the rewrite table gets corrupted. |
Re: Whats the best way to transfer dasd from z/os to Hercules
Do the older ARCHMODE settings in Hercules include the jump instructions? I would think no, since they didn't exist way back when.
toggle quoted message
Show quoted text
On 1/20/2025 4:10 AM, Fish Fish via groups.io wrote:
Sounds like CCKDDU64 needs to be "jumpified" so that base registers aren't needed. |
Re: Whats the best way to transfer dasd from z/os to Hercules
We'll make an MVS sysprog out of you yet! :-) On Mon, Jan 20, 2025 at 6:10?AM Fish Fish via <david.b.trout=[email protected]> wrote: Andrew wrote: --
Jay Maynard |
Re: Whats the best way to transfer dasd from z/os to Hercules
Fish,
?
Just to follow up with your questions....
You can format a message on the fly and use WTO to display it as well.? Its a little more trouble, especially because Greg's program is reenterable, so you would want to maintain that reenterability by not using the self-modifying method of moving the variable values into the WTO text by issuing MVC into the macro expansion itself.
?
But since you stated you are going to continue using #MSG, that will be fine; just do the CLOSE (prdcb) prior to the ABEND macro.? If you want to save registers 14-1 prior to the CLOSE that's fine.? You do not need to restore them after the CLOSE.? The point of saving them is so you can have a look at those registers in the dump, if they are needed; CLOSE will clobber them.? Further, the ABEND macro destroys 0 and 1 anyway, so saving them off like this before the abend is a good practice.
You can make WTO write to the job log and not the console, but since you are going to use #MSG I wont get into it here.
JCL.? Not JECL (that's something else).
Noted; sorry.? Your earlier posts led me to believe that you might not know how to do anything within the system.
?
Regarding RACF, yes it is the security software on the system.? But as long as you name any datasets you create with the first qualifier of the dataset name the same as your userid, you won't have any problems with it. For example, if you are logged on to user IBMUSER, then the xxxx.LIB.JCL dataset should be named IBMUSER.LIB.JCL
?
Good luck.
?
Regards,
Bob
? |
Re: Whats the best way to transfer dasd from z/os to Hercules
Andrew wrote:
I believe I know where/why it's going wrong with anythingThat's GREAT news, Andrew! THANK YOU!! :)) I did use #MSG to assist in debugging, but could not use tooSounds like CCKDDU64 needs to be "jumpified" so that base registers aren't needed. Now looking at how to correct this........MUCH appreciated! :-D (This is GREAT!) <me: does happy dance> :)) -- "Fish" (David B. Trout) Software Development Laboratories mail: fish@... |
Re: Whats the best way to transfer dasd from z/os to Hercules
I believe I know where/why it's going wrong with anything greater than 3390-27. In my test with a 3390-54, the size of the L1TAB needed for 982800 tracks is 30720. Adding the 1024 bytes for the header gives 31744 bytes. CCKDDU64 does not seem to deal with this, when this first record is greater the the lrecl/blksize of 16384, and it looks like the rewrite table gets corrupted. I did use #MSG to assist in debugging, but could not use too many of them as? it caused base register addressability to fail due to the increase in csect length. Now looking at how to correct this........ Andrew |
Re: Whats the best way to transfer dasd from z/os to Hercules
How about WTO ROUTE=11 to JESSYSMG, not the console?
On Sun, Jan 19, 2025 at 7:26?PM Tom Brennan via groups.io <tom@...> wrote:
-- Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all? |
Re: Whats the best way to transfer dasd from z/os to Hercules
And before people step all over me, I'm talking about a simple WTO 'XYZ' statement, not other menthods of telling WTO to spit out a pre-formatted string with MF=E and all that. I don't think that's what Fish is talking about.
toggle quoted message
Show quoted text
On 1/19/2025 5:26 PM, Tom Brennan wrote:
WTO can only send the hard-coded string between the ticks. |
Re: Whats the best way to transfer dasd from z/os to Hercules
You're correct, WTO can only send the hard-coded string between the ticks. But - for quick tests I'll often modify that string, something like:
toggle quoted message
Show quoted text
MVC WTO1+8+7(8),MODNAME WTO1 WTO 'MODULE XXXXXXXX WAS LOADED' The WTO macro expansion produces the hard-coded string, but since I know where it is with WTO1+8, I'll poke my own data in there before it gets executed. By coincidence, I wrote my own C-style ASM macros and supporting code many years ago, probably a whole lot like Greg's. Here's an example of my version, and we both apparently chose # as the macro prefix: #WTOF 'THIS IS LINE %D OF %D',PARM1,PARM2 ASM gets really difficult when formatting variable length text, converting numeric/hex for output, and things like that. #WTOF (and others in my set like #PRINTF and #SPRINTF) make ASM coding a lot easier. On 1/19/2025 4:40 PM, Fish Fish via groups.io wrote:
Bob Polmanter wrote: |
Re: Whats the best way to transfer dasd from z/os to Hercules
Bob Polmanter wrote:
[...] Instead of sprinkling more #MSG macros around, use WTO. ItsUnderstood. HOWEVER... If I'm not mistaken, WTO cannot *format* the message text it is to display. Correct? It can only display an already formatted message. It can't substitute values into the text that it is to display. Yes? That's the beauty of Greg's #MSG macro: it provides 'C' language type string formatting syntax (e.g. %s, %d, %x, etc) to make it easier to issue a dynamically constructed message. So I'd prefer to stick with #MSG instead, and just fix the abend code so that any messages that haven't been "flushed out" are forced to be written to SYSPRINT before the ABEND is issued. That and the fact that WTO writes its messages to the operator console too, which I'd like to avoid. (I'd rather they all go to SYSPRINT where they belong.) [...] In any case, it really doesn't matter. These are unconditionalAh. Okay. I should have realized that. My bad. Since that is not occurring, I wouldn't worry about storage.10-4. I can't think of a good way to help you get the code into yourI think I'm just going to FTP upload the stuff I think I'm going to need, such as the source code and the JCL needed to assemble it, along with the OBJECT code for ZLIB and the JCL to link it all together into an executable, etc. Basically, I'm going to TRY following Greg's $$README. But a lot of it is stuff I've never done before, which I'm a little worried about. But I'll try to give it a try. I might just get lucky and managed to get it all working. (I really REALLY want to clean up the source code to CCKDDU64 so I can get a pretty looking assembler listing that I can better follow! That's my immediate goal. Once I get that, then I'll be in a better place to try and debug this thing!) You need to have a basic knowledge of how to logon, to use ISPF,Which I already know how to do. I'm not a *complete* z/OS idiot after all. Just a very, VERY inexperienced one! :) 3270 file-transfer would be the easiest way,Or FTP! Yes? but that also depends on your 3270 emulator. I could put theI've already got the source. And the JCL, etc. Basically I already have everything that is in Herc's "cckddump-cckdload.zip" file in its 'util' subdirectory. but you would still need to know how to run a job to load the tape.As I said, I'm not a COMPLETE idiot. ;-) I think I can handle that. :) Providing the proper JCL would help though. I'm very weak on z/OS JCL. (JECL?) BUT... That shouldn't be necessary. I've think I've already got everything I need. I could put it in a small dataset on a small 3390 volume and you couldAs I said, don't bother. I'm just going to FTP it to my z/OS system, placing it all in some dataset somewhere (maybe xxxx.LIB.JCL) and just try to hack my way through it all with the help of Greg's $$README. Further, using a foreign 3390 volume would likely cause RACF securityI have ZERO experience with that! As I understand it, it's some type of security thing (yes?), and after (or during??) linking of CCKDDU64, the option or flag or something needs to be set so it can directly access the volume that is to be dumped. I might need some help from somebody for that. But I *think* I might be able to slog my way through the rest. Hopefully. I don't have any way to assemble and execute this code in its properSame with me, for the moment. But as soon as I have time (HA! THAT'S a joke!) I'm going to *try* and give all of this a go. (I *hate* having to debug this thing myself! I'm a *Hercules* developer, *not* a z/OS developer! Technically I shouldn't be wasting my time on this. Guest o/s issues are the responsibility of the user. MY responsibility is only with Hercules. I can't be expected to be an expert at every damn operating system that is able to be run under Hercules! That would be ridiculous.) -- "Fish" (David B. Trout) Software Development Laboratories mail: fish@... |
Re: Whats the best way to transfer dasd from z/os to Hercules
Hi Fish,
This would only minimally be helpful, because if any abend occurs later, again the last message won't be displayed.? Instead of sprinkling more #MSG macros around, use WTO.? Its super simple:? the format is WTO? 'message text here'
?
For example:
??????????? WTO??? 'Arrived at label process_vtoc'
Just change the message text as needed.? You can put as many of these in as you like, although if you were to get super crazy with them you could blow a base register and cause assembly problems.
?
I agree that there seems to be many more STORAGE OBTAIN than RELEASE calls, but without following the flow completely it is hard to say whether all of the OBTAINs are released, though it sure looks like they are not.? In any case, it really doesn't matter.? These are unconditional OBTAINs, so if the system cannot acquire the storage for you, the program will abend with a system abend code (not a user U0099).? Since that is not occurring, I wouldn't worry about storage.
?
I can't think of a good way to help you get the code into your system if you don't know how to use the system.? You need to have a basic knowledge of how to logon, to use ISPF, access datasets, submit jobs and view output.? 3270 file-transfer would be the easiest way, but that also depends on your 3270 emulator.? I could put the CCKDDU64 source and JCL on a tape image and send it to you, but you would still need to know how to run a job to load the tape.? I could put it in a small dataset on a small 3390 volume and you could bring that online via your Hercules config, but with this method and all of the above you would still need to be able to use ISPF to access it, modify it, submit it, and do typical programming/debugging with it.? Further, using a foreign 3390 volume would likely cause RACF security access issues to gain access to that dataset, and RACF is an area that I have struggled with long ago.? I dont have any way to assemble and execute this code in its proper environment, so I am limited to just looking at the code.
?
Regards,
Bob
?
? |
Re: Whats the best way to transfer dasd from z/os to Hercules
Andrew wrote:
I found a 3390-54 and was able to reproduce the problem.Much appreciated, Andrew! Could you also sprinkle some more #MSG at some key places too? I'm having a hard time following the code in just source form, but I don't like what I'm seeing. I'm seeing a lot of STORAGE OBTAIN calls, but I can't see where any of them are being testing for actual success or failure. This is especially concerning since it appears as if the 'write_track' subroutine is obtaining storage but never releasing it? If that's true though, then maybe we're just running out of storage? According to Brian, he's trying to dump 281380 tracks: "281380 tracks out of 901530 will be dumped" That's a lot of tracks and a lot of storage being obtained and never released! Just thinking out loud... (I sure wish I could figure out how to get this thing on my own system so I could play around with it!) -- "Fish" (David B. Trout) Software Development Laboratories mail: fish@... |
Re: Whats the best way to transfer dasd from z/os to Hercules
I found a 3390-54 and was able to reproduce the problem. The error message is 'logic error writing track' which is triggered on line 1174 in the source code. The Message is at x'438' from register 13 in the dump. I'll scratch around in my spare time.On Sat, Jan 18, 2025 at 9:30?PM Fish Fish via <david.b.trout=[email protected]> wrote: Bob Polmanter wrote: |
Re: Whats the best way to transfer dasd from z/os to Hercules
Bob Polmanter wrote:
I looked at the code in CCKDDU64 and just prior to every branchThat would be the late great Greg Smith. One of the original Hercules developers from long ago. A truly brilliant man. I really miss him. :( chose to use PUT-Locate for the writes to SYSPRINT.I have no idea what that means. :( This is a problem in the abend case because the line won't beWould it be possible to issue a "dummy" PUT after each message (#MSG?) that didn't actually print anything? (Or perhaps one that only printed, say, a single blank character?) If the program did not force an abend, then the message wouldCouldn't registers 14-1 simply be saved beforehand and restored afterwards? abend EQU * (something went very wrong somewhere!) STM 14,1,saveregs (save registers before CLOSE) CLOSE (prdcb) (close SYSPRINT to see our ABEND message) LM 14,1,saveregs (restore registers after CLOSE) ABEND 99,DUMP (ABEND with DUMP) saveregs DC 4F'0' (registers 14-1 save area) After that, one could examine the older U0099 dump without the CLOSE.Eh? Wouldn't simply trying CCKDDU64 again (with the above modified code) produce a valid dump that could be examined? (AND also provide a good SYSPRINT output with the needed #MSG explaining why the abend was occurring too?) What am I missing? Alternately, the message buffer should be in the dumps you alreadyWhy can't we just make the proposed "fix" to CCKDDU64 as suggested and re-assemble and re-link it and use THAT new version of CCKDDU64 instead of the old broken one? Yes, it obviously won't magically fix whatever is ultimately causing the abend with 3390-54's, but at least we'll be able to see our abend message! Again, what am I missing here? Longer term, the PUT-Locate method and logic for handling SYSPRINTWell then let's do THAT then! Yes?! I'm not a z/OS programmer. I programmed on DOS/VS(E) and VM/SP. I never wrote a single program on z/OS in my life. So someone else (Brian himself maybe?) is going to need to make and test these proposed changes (fixes) to CCKDDU64 for us. Once they're made and we can see why it's failing, we would then need to basically repeat the same procedure: update the CCKDDU64 source code with the modified (fixed) code, rebuild and retest, until it eventually works correctly. Then we can commit the newly updated/fixed CCKDDU64 program to Hercules so others won't be having the same problem that Brian is having. Come on guys! Help me with this! Please? Even better, just use a WTO macro to display it on the console andThen let's do THAT instead! Sheesh! Let's FIX this thing! (Please?) When I last used CCKDDUMP in approximately 2014, I used it againstWell that's good to know! :) So.... Who is going to volunteer to make these changes to CCKDDU64 and test them? Brian? Are you up to the challenge? I certainly can't make or test them! I know *nothing* about software development on z/OS! Help! (Please?) p.s. THANK YOU for looking into this issue for us, Bob!! MUCH appreciated!! -- "Fish" (David B. Trout) Software Development Laboratories mail: fish@... |
Re: Whats the best way to transfer dasd from z/os to Hercules
I looked at the code in CCKDDU64 and just prior to every branch to the user abend 99 code, there is a #MSG message macro that will print a single line explaining why the program is abending.? This message should be written to the SYSPRINT DD dataset.? Unfortunately, whomever decided to write this code chose to use PUT-Locate for the writes to SYSPRINT.?? This is a problem in the abend case because the line won't be written until either (a) another PUT is issued (which there is not), or (B), a CLOSE macro is issued against the SYSPRINT DCB before the ABEND macro.
?
If the program did not force an abend, then the message would be written properly.? This message could provide a clue on why it is failing for a 3390-54.?
?
The easiest solution is to add a CLOSE (prdcb) statement just prior to the ABEND 99,DUMP macro, so it would go from this:
?
abend?? ABEND 99,DUMP
?
to this:
?
abend?? EQU *
???????????? CLOSE (prdcb)
???????????? ABEND 99,DUMP
?
The CLOSE macro will alter registers 14-1 before the dump is taken, which isnt ideal in most cases, but right now the priority is to get the error message text.? After that, one could examine the older U0099 dump without the CLOSE.? Alternately, the message buffer should be in the dumps you already have.? But finding it means following a trail of control blocks and it wont be easy.
?
Longer term, the PUT-Locate method and logic for handling SYSPRINT should probably changed to use PUT-Move (MACRF=PM) and this lack-of-message-on-abend issue will go away. Even better, just use a WTO macro to display it on the console and job log.
?
When I last used CCKDDUMP in approximately 2014, I used it against a 3390-54 volume, but that volume was not full and the resulting cckd dasd image was a little over 3 GB in size.? CCKDDU64 did not exist at the time.? However, in order to get CCKDDUMP to work at all, I had to modify the SYSUT2 DCB in the code to add a DCBE macro, and the DCBE needed to specify BLOCKTOKENSIZE=LARGE.?? However, I see now that in the current version of CCKDDUMP and CCKDDU64, this DCBE parameter is now coded in the source.
?
Regards,
Bob |
Re: Whats the best way to transfer dasd from z/os to Hercules
It works fine for 3390-3, 3390-9 and 3390-27.? It fails for 3390-54, and I don't have anything in between to see exactly where it breaks.
?
The site with the smaller 3390-54 tracks is because that's what they chose when they installed their array.? They probably multiplied wrong, but in any case CCKDDU64 does work with the volumes I tested above, just not the 3390-54 ones.?
?
Hopefully someone has a solution for fixing this for larger drives.? If so, I'm willing to test it for them.
?
Brian |
Re: Whats the best way to transfer dasd from z/os to Hercules
SUGGESTION?
Standard stupid-simple basic debugging: Sprinkle as many additional detailed "#MSG" macro calls after the last one that was successfully issued ("file SYSUT2 opened for output") in the CCKDDU64 source code itself, and then re-assemble and re-link the CCKDDU64 program, and give it another try! We have simply GOT to determine WHERE things went wrong. We have simply GOT to determine where Brian's USER=99 abend is occurring, and WHY it is occurring. Guessing will get us nowhere, and is a big waste of time. Let's get to the root of the problem. Let's fix the bug in CCKDDU64. Or am I crazy. -- "Fish" (David B. Trout) Software Development Laboratories mail: fish@... |
Re: Multiple OSA define
Mike Ward wrote:
Mr. Fish. I don't know much about Github so I don't knowYou need to build it for yourself using Hercules Helper for Windows. -- "Fish" (David B. Trout) Software Development Laboratories mail: fish@... |
Re: Multiple OSA define
Mr. Fish. I don't know much about Github so I don't know how to get to the development branch. Would you please tell me how to access 4.8 development?
toggle quoted message
Show quoted text
Thanks in advance. -----Original Message-----
From: [email protected] <[email protected]> On Behalf Of Fish Fish via groups.io Sent: Sunday, January 12, 2025 10:50 AM To: [email protected] Subject: Re: [H390-MVS] Multiple OSA define Ian Shorter wrote: Brian, what version of Hercules are you using? There was a fix to theGood catch, Ian! I had forgotten about that fix. So yeah: Brian? What version of Hercules are you using? Official 4.7? Or development 4.8? You might want to try your large (ftp?) using QETH/OSA again, but using Herc 4.8 Development instead. It might work better due to the EQBS and SQBS instruction fixes. (And it would be a good confirmation test for us too!) If you've never built Hercules for yourself before, use Bill Lewis's excellent Hercules Helper script. It makes building Hercules a breeze on both Linux or Windows. -- "Fish" (David B. Trout) Software Development Laboratories mail: fish@... |
to navigate to use esc to dismiss