Re: Generating output in SORT with a time value
Thanks so much for this, Kolusu. I was hoping to find a way to get a new time on every record, but I think I can work with this and the following sequence number. I hope you have a great day today! Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 1/31/2024 1:32:23 PM Subject Re: Generating output in SORT with a time value Hi there Kolusu, I messed up my format, and should have had colons instead of commas. Billy, Apart from usage of Colons, did you realize that you have OVERLAPPING data? At position 82 you wanted to write 82:C'This is my data field 3', and then at position 102 you wanted to write this 102:C'AZ', The length of the text at 82 is 23 bytes long. +1+2 THIS IS MY DATA FIELD 3 You want to write 23 bytes into a 20-byte length which is NOT possible. I checked the APG, and could not find a way to use only the timestamp. Not every user requirement in the world can be documented. You get the timestamp and strip of the values and get the desired value. btw I hope you do realize that TIMESTAMP is got ONCE and since you are writing 1500 records, every record will have the SAME exact timestamp. The Timestamp is NOT changed for every record. For example, this is the time stamp +1+2+--- -mm-dd-hh.mm.ss.nn 2024-01-31-11.05.40.559424 Now you want to remove the separators and have the time as 110540559424. That value will remain the SAME value for all the 1500 records. If you want the same time for all the records, then here is the JCL that would get you the desired results ( I fixed the overlapping fields ) 2 lines(see the lines in bold) is what is required to get the time without separators. //STEP0100 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD * ABC //SORTOUT DD SYSOUT=* //SYSINDD * OPTION COPY INREC BUILD=(DATE5) OUTFIL REPEAT=1500, BUILD=(01:C'TLX1', 05:12,15,UFF,M11,LENGTH=12, 17:SEQNUM,5,ZD,START=10001,INCR=3, 22:C'THIS IS MY DATA FIELD 1', 52:C'THIS IS MY DATA FIELD 2', 82:C'THIS IS MY DATA FIELD 3', 112:C'AZ', 114:C'1') /* Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Generating output in SORT with a time value
Hi there Kolusu, I messed up my format, and should have had colons instead of commas. Here is what I should have written: OUTFIL REPEAT=1500 BUILD=(1:C'TLX1', 5:SEQNUM,12,ZD,START=12345600,INCR=1, <<==This is the one to change from a number to a dynamic timestamp 17:SEQNUM,5,ZD,START=10001,INCR=3 22:C'This is my data field 1', 52:C'This is my data field 2' , 82:C'This is my data field 3', 102:C'AZ', 104:C'1') I checked the APG, and could not find a way to use only the timestamp. What I want in column 5 is a 12 numeral value (let's say 125110104322) that represents the HHMMSSmm for each record as it is built. I have seen examples using a static date for the entire execution, but I am hoping for multiple milliseconds to show up in these records. Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 1/31/2024 12:06:40 PM Subject Re: Generating output in SORT with a time value We have this so far: OUTFIL REPEAT=1500 BUILD=(1,C'TLX1', 5,SEQNUM,12,ZD,START=12345600,INCR=1, 17,SEQNUM,5,ZD,START=10001,INCR=3 22,C'This is my data field 1', 52,C'This is my data field 2' , 82,C'This is my data field 3', 102,C'AZ', 104,C'1') Billy, Looks like you created your own syntax as that is NOT a valid for both DFSORT and Syncsort. IS there a way I can say "In column 5, put the right-now-time-millisecond value as HHMMSSmm". We will create multiple files at different times for our test, which is why we want to have the real time instead of a generated number. No idea, what column 5 is. If you want a 26 byte date of the format C'-mm-dd-hh.mm.ss.nn', then use DATE5. Look at examples in the DFSORT Application programming Guide. Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Generating output in SORT with a time value
Hey everyone! I have a user who is creating some test data to load into VSAM using DFSORT, and he wants to create part of the key using the current millisecond timestamp. IS there a way I can say "In column 5, put the right-now-time-millisecond value as HHMMSSmm". We will create multiple files at different times for our test, which is why we want to have the real time instead of a generated number. We have this so far: OUTFIL REPEAT=1500 BUILD=(1,C'TLX1', 5,SEQNUM,12,ZD,START=12345600,INCR=1, 17,SEQNUM,5,ZD,START=10001,INCR=3 22,C'This is my data field 1', 52,C'This is my data field 2' , 82,C'This is my data field 3', 102,C'AZ', 104,C'1') Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Replacement for LMAC program in ISPF 3.1
Hello, we just turned on z/OS 3.1, and its component ISPF 3.1 here. Now, I just saw when editing a member that my LMAC program (from Doug Nadel originally) no longer works, and gives me a message: LMAC005 You must be running an ISPF version greater than 5.8 and less than 7.9 to run LMAC. How should I deal with this? A quick look on the web indicated that I should use the utility function to define each line command to a macro. I currently have 85 macros in my single Rexx driver, and cannot imagine splitting this and going through that. Do I have any way to drive my single macro program like I had before with LMAC? Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Can this be done?
Ok, it looks like my plan to read any type of file is not going to be as simple as I thought. I guess I will abandon that for now, as it was just going to be a learning exercise to see if we could have a single program open and read data from any disk filetype. I will stop thinking now, and go back to work! Thanks for letting me know how complicated this simple thought was - you can all carry on here without me... Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Can this be done?
Hey everyone! I have a little down time here at the end of the year with our freeze, and I wanted to play with some ideas I have had. I would like to write a program that can open any kind of file - PDS, Sequential, Panvalet, loadlib, and maybe even VSAM components. I want to open the file in "raw" format, as if I were going straight to the disk pack and scooping up the bytes from the beginning of the allocation to the end. Is there any way to do this without caring about the catalog RECFM? Obviously, the easiest way is through some JCL parameter that says "force as PS" but I doubt that is likely. I can't go into more detail at present, sorry! What do you think? Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Scan a VSAM LDS?
This looks interesting at first glance...do you know where I might find some examples to see it in action? Thank you and best regards, Billy Ashton -- Original Message -- From "Seymour J Metz" To IBM-MAIN@listserv.ua.edu Date 9/12/2023 12:39:47 PM Subject Re: Scan a VSAM LDS? You could use windowing.Look at CSRIDAC if you don't want to use assembler. From: IBM Mainframe Discussion List on behalf of Billy Ashton Sent: Tuesday, September 12, 2023 11:19 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Scan a VSAM LDS? Hey everyone! I was wondering if there is a way to scan a VSAM LDS for string occurrences? I know that there is no way to see the individual records, but it could be helpful if I could at least dump the data block where the string was found. As an example, something like this: OPTION COPY RECORD TYPE=V INCLUDE COND=(5,24576,SS,EQ,C'MBC$23005X') (I don't know if I need special statements for VSAM LDS...I couldn't find any indication in the docs.) Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Scan a VSAM LDS?
Hey everyone! I was wondering if there is a way to scan a VSAM LDS for string occurrences? I know that there is no way to see the individual records, but it could be helpful if I could at least dump the data block where the string was found. As an example, something like this: OPTION COPY RECORD TYPE=V INCLUDE COND=(5,24576,SS,EQ,C'MBC$23005X') (I don't know if I need special statements for VSAM LDS...I couldn't find any indication in the docs.) Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is SMP/E needed for installs?
If you want to INCLUDE a member, this is like a PROC, so you need to have SETS in a system-defined proclib or you have to add something like //JCLLIB ORDER=PHS.PDS.JCL840 and I would probably move the INCLUDE up to where you explain what is in the SETS member, to make it clearer. Billy Thank you and best regards, Billy Ashton -- Original Message -- From "Phil Smith III" To IBM-MAIN@listserv.ua.edu Date 8/31/2023 11:58:23 AM Subject Re: Is SMP/E needed for installs? Thanks to many people politely telling me, "Hey dummy, use SYMBOLS=", I have gotten around the must-change-many-places problem with the SMP/E jobs. Thanks! Next, Gil suggested using an INCLUDE member, so the SETs get done exactly once, which I quite like. But now I'm stumped again. Here's my trivial test job: //TEST JOB MSGLEVEL=(1,1),MSGCLASS=A,NOTIFY= //* //* THE FOLLOWING DATA SETS EXIST: //* PHS.PDS.JCL840(TEST) **THIS JOB //* PHS.PDS.JCL840(SETS) **THE INCLUDE MEMBER //* HUD840.VVSH84C.SMPMCS**THE INPUT DATA SET //* PHS840.SAMPLE.MCS**THE OUTPUT DATA SET //* //* PHS.PDS.JCL840(SETS) INCLUDES THE FOLLOWING LONE STATEMENT: //* SET HLQ=HUD840 //* //COPYIT EXEC PGM=IEBCOPY //JCLLIB DD DSN=PHS.PDS.JCL840,DISP=SHR // INCLUDE MEMBER=SETS //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN= //SYSUT2 DD DSN=PHS840.SAMPLE.MCS,DISP=OLD //SYSINDD * COPYGRP INDD=((SYSUT1,R)),OUTDD=SYSUT2 /* This fails with: STMT NO. MESSAGE 4 IEFC017I INCLUDE SETS WAS NOT FOUND 6 IEFC624I INCORRECT USE OF PERIOD IN THE DSN FIELD I understand the latter error (because the SET didn't happen), but the first is baffling. Based on https://www.ibm.com/docs/en/zos/2.1.0?topic=description-examples-include-statement I first thought that the JCLLIB needed to *precede* the EXEC statement. That's sure what they show. But if I move it up one, I get: STMT NO. MESSAGE 2 IEFC019I MISPLACED DD STATEMENT .followed by the same two other errors. I'm sure this is something obvious, but I've been tinkering and not getting anywhere. At one point I did have it complaining not about the JCLLIB (which was before the EXEC at that point), but rather that the "JOB HAS NO STEPS", which I don't understand either, but that went away with more tinkering-though nothing I did really ADDED a jobstep. Any ideas? -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: SORTWK space usage
OK, the team is going to figure out what is the best set of defaults for the majority of work (80/20 rule), and then use the full DFSPARM override for those odd jobs that need to add FILSZ. I think we will leave the DYNSPC out for now, and work with the default 256 unless we need to change it. Of course, we test all the job changes like this. Thanks again so much for your guidance here! I don't think I have any more questions, but other folks may still jump in, I guess. Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 7/6/2023 1:13:39 PM Subject Re: SORTWK space usage and their intention is to use the common DFSPARM like I showed, but then to concatenate another line there with the FILSZ=E### value. This way, they don't need to specify everything again, and can focus on only the parameter they need. Billy, Unfortunately, that would NOT work. You cannot have multiple OPTION statements. However, you can override the contents of DD of a proc in the JCL. So, you add the FILSZ parameter at the end of your parms. Or you need to add a COMMA at the end and have FILSZ parm on the next line. Is there some formula for the DYNSPC setting? the manual had a table, but it said it was showing a value for 6000-byte records...that doesn't sound overly useful The manual also mentions about the size of the file in MB in relation to DYNSPC. "Blockset is able to sort approximately 150 megabytes with DYNSPC=32 and approximately 1200 megabytes with DYNSPC=256." In your case you overrode DYNSPC=768 which would let your Sort 3600 megabytes(3.6 GB). However, your program is trying to sort about 69 GB of data. You cannot really tune DYNSPC for that size. You are better off providing the estimated filesize via DFSPARM with DYNALLOC and sort will automatically allocate the necessary disk space. ≫--is there a different setting for secondary allocation? Look up the parm WRKSEC which specifies whether DFSORT uses automatic secondary allocation for temporary JCL SORTWKdd data sets for which a secondary allocation amount is not specified. https://www.ibm.com/docs/en/zos/2.5.0?topic=statements-option-control-statement Thanks, Kolusu -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: SORTWK space usage
Yes, you are right. We are looking for a common proc (well, it is common per application team - we have 7 major teams). Once we get done going through this exercise, we will see what makes sense to update installation defaults - that is a good idea! Now, for the one big job - the COBOL program is releasing records to the sort, and their intention is to use the common DFSPARM like I showed, but then to concatenate another line there with the FILSZ=E### value. This way, they don't need to specify everything again, and can focus on only the parameter they need. Is there some formula for the DYNSPC setting? the manual had a table, but it said it was showing a value for 6000-byte records...that doesn't sound overly useful. And based on what you said, this is primary allocations--is there a different setting for secondary allocation? So for example, If I had my SORTWKxx file defined as CYL(4000,1000) - which might be too high a primary as you said - How can I convert that sort of allocation to DYNSPC settings? It sounds like that would be a crucial setting for my common parameters to be successful. Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 7/6/2023 12:05:52 PM Subject Re: SORTWK space usage One question they asked me, about our common SORT proc: Billy, Common SORT proc? Does that mean every SORT gets that override? If that is the intention, why not update the Installation defaults with those overrides? You can use PARMLIB member and update for both ICEAM1 (JCL Invocations) ICEAM2 (Program invoked) environments. Is it acceptable to code this DFSPARM data in a single PDS member, and then let it be the default for all our SORT calls? Is there any potential problem with using this everywhere? Billy, It looks good, but I just don't see the FILSZ parm. I remember you mentioning that a COBOL program is passing the records to DFSORT. The DYNSPC=768 would give you 1068 cylinders as primary space. Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: SORTWK space usage
This discussion has gone well in my meeting with the programming team. One question they asked me, about our common SORT proc: Is it acceptable to code this DFSPARM data in a single PDS member, and then let it be the default for all our SORT calls? Is there any potential problem with using this everywhere? //DFSPARM DD * OPTION DYNALLOC=(SYSDA,15),DYNSPC=768,HIPRMAX=OPTIMAL,MOSIZE=MAX,MOWRK /* (I put the data instream here, but we want to stick it into a system PDS member.) Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 7/5/2023 11:18:26 AM Subject Re: SORTWK space usage Also, I assume there is no way to force a Hipersort or a Dataspace sort? In one of my tests this morning, I saw this: Don, If you want to force HIPERSORT, then you need to turn off other paths of code. You can do that with the following. MOSIZE=0,DSPSIZE=0,NOMOWRK,HIPRMAX=OPTIMAL Similarly, if you want to run dataspace path then you need. MOSIZE=0,NOMOWRK,HIPRMAX=0,DSPSIZE=MAX Should I be concerned about the ICED180 and 188 messages showing they weren't used? NO. DFSORT executes 5 different paths and depending on the path used, the message ICE165I, ICE199I, ICE299I, ICE399I, ICE180I and ICE188I will have a non-zero value. In your case your job used Memory objects as work storage and hence the other paths of code have ZERO values for usage. Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: SORTWK space usage
Thanks so much to everyone who replied. I have gotten some positive responses internally here, and we are going to look at retooling some of our jobs after we do some testing to be sure we don't hurt anything. Who knows, we might even get some performance gains by letting the system take defaults. Have a good evening, and a happy Independence Day to the US folks! Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 7/3/2023 6:40:56 PM Subject Re: SORTWK space usage how can I dump off the current SORT system options? Billy, Check this. https://www.mail-archive.com/ibm-main@listserv.ua.edu/msg105660.html Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: SORTWK space usage
Sri Kolusu, you mentioned getting better diagnostics from the SORTDIAG DD DUMMY. Are these diagnostics something I can interpret? I know that many of the SORT messages that normally come out are coded values and not overly useful on their own without some interpretation (unless I missed some docu somewhere that helps interpret the SYSOUT messages). Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 7/3/2023 4:54:39 PM Subject Re: SORTWK space usage 450mill * 110 * 1.5 = 7425000 = 69GB so maybe SORTWK01 - SORTWK10 Billy, Based on your above description, you would need about 1.345 million tracks of sortwk space if the sorting is to be done entirely using Disk space. //SORTWK01 DD UNIT=WORK,DSNTYPE=LARGE,SPACE=(CYL,(4000,1000)) It is highly unlikely that you have 10 SINGLE volumes that have 4000 cylinders of contiguous space. So I would reduce the primary to reasonable amount depending on your shop disk space availability. //SORTWK01 DD UNIT=(WORK,5)... and this will not work, is that right, Sri Kolusu? I would only get the first volume anyway? Well, you will NOT a JCL error or any DFSORT message as it would ONLY consider the FIRST volume. SORTWK space cannot span multiple volumes. Only the First volume is considered. Ideally, I would code up Dynamic Allocation and let DFSORT figure out how much disk space it needs. //SYSINDD * OPTION DYNALLOC=(,16),MOSIZE=MAX SORT FIELDS=(P,M,F,X) /* This would allocate 16 + 2(reserve based on DYNAPCT=10) = 18 sortwk datasets along with setting the MOSIZE to max so that you get the max of 64 bit memory objects. If you know the esoteric name for disk pool space then you can specify on dynalloc parm. For example if you diskspace has an esoteric SYSWRK //SYSINDD * OPTION DYNALLOC=(SYSWRK,16),MOSIZE=MAX SORT FIELDS=(P,M,F,X) /* If I have a COBOL program doing a SORT in the middle of the program (I am not sure if the big file is doing this, too or not), is using this DFSORT the best way to force the use of 15 Dynalloc SORTWK files, so I would not have to code SORTWK DD statements? Well if a COBOL program is passing the records then DFSORT has no ability of Calculating the filesize and hence you would receive ICE118I message. Generally, DFSORT can automatically determine the input file size. However, in a few cases, such as when an E15 supplies all of the input records, or when information about a tape data set is not available from a tape management system, DFSORT cannot determine an accurate file size. I believe you are using Cobol SORT key word to sort the data. In such cases you have to code DFSPARM along with dynamic allocation and the estimated file size, so that DFSORT can determine the size of the file that is being sorted. So something like this. I assumed that the size of the file to be sorted has 500 million (450 + 10% for future growth). //DFSPARM DD * OPTION DYNALLOC=(,16),MOSIZE=MAX, FILSZ=E5 /* Also make sure that your JCL has //SORTDIAG DD DUMMY Which will produce more diagnostic messages Thanks, Kolusu DFSORT Development IBM Corporation -Original Message- From: IBM Mainframe Discussion List On Behalf Of Billy Ashton Sent: Monday, July 3, 2023 11:14 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: [EXTERNAL] Re: SORTWK space usage Thanks everyone - these are good recommendations. However, the guy who came to me first has a job that sorts 450 million records of 110 bytes, and I can't see how I could run SORT without specifying SORTWK DD statements. Are there special configuration options I can verify that we have in place to help my comfort level that I could eliminate SORTWK DD? If the programming team are not convinced, does this look right, based on the discussion - and based on a 100% Disk sort, which is not likely? 450mill * 110 * 1.5 = 7425000 = 69GB so maybe SORTWK01 - SORTWK10 //SORTWK01 DD UNIT=WORK,DSNTYPE=LARGE,SPACE=(CYL,(4000,1000)) to //SORTWK10 DD UNIT=WORK,DSNTYPE=LARGE,SPACE=(CYL,(4000,1000)) and this will give me 4000 + (15*1000) on each, or 4c primary + (up to 150 * 1000) secondary While we have been talking here, I have looked, and found some jobs with //SORTWK01 DD UNIT=(WORK,5)... and this will not work, is that right, Sri Kolusu? I would only get the first volume anyway? Thank you and best regards, Billy Ashton -- Original Message -- From "Farley, Peter" <031df298a9da-dmarc-requ...@listserv.ua.edu<mailto:031df298a9da-dmarc-requ...@listserv.ua.edu>> To IBM-MAIN@listserv.ua.edu<mailto:IBM-MAIN@listserv.ua.edu> Date 7/3/2023 12:44:43 PM Subject Re: SORTWK space usage I will add on to Sri's excellent answer with my very STRONG recommendation NOT to use hard-coded SORTWK's in your JCL. Both of the major SORT vendors (IBM and Syncsort) do a far, far better job of estimating necessary SOR
Re: SORTWK space usage
Thanks again, Peter, and all. One last question - how can I dump off the current SORT system options? For example, Peter, you said, "my shop defaults DYNALLOC to 59" - how can I see what our default setting has? Thank you and best regards, Billy Ashton -- Original Message -- From "Farley, Peter" <031df298a9da-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 7/3/2023 5:27:52 PM Subject Re: SORTWK space usage Billy, If it is an internal sort then supply the FILSZ=Ennn parameter in DFSPARM (or $ORTPARM for Syncsort) along with the DYNALLOC parameter. My shop defaults DYNALLOC to 59 and allows production jobs to use the max of 255 for particularly large sorts. Some of ours are, like yours, multiple hundreds of millions of relatively short records, and DYNALLOC is used all the time for those, no JCL SORTWK at all. My team has a standing policy to: (1) remove SORTWKnn from JCL and PROC's that have them when they are next updated (2) add the appropriate PARM JCL if not already there (3) add/update PARM control card(s): DYNALLOC larger than default if needed by testing on production volume files; for internal SORT's also add FILSZ=Ennn at about 1.2 times current volume unless there is known future growth anticipated (4) enlarge too-small REGION parameters to at least 512M for large sort steps (internal or external) and higher if needed up to the installation-controlled max Let SORT do the work for you, there is really no need to do that work yourself. HTH Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Billy Ashton Sent: Monday, July 3, 2023 3:48 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: SORTWK space usage Doug, this raises a good point. If I have a COBOL program doing a SORT in the middle of the program (I am not sure if the big file is doing this, too or not), is using this DFSPARM the best way to force the use of 15 Dynalloc SORTWK files, so I would not have to code SORTWK DD statements? Thank you and best regards, Billy Ashton -- Original Message -- From "Doug" To IBM-MAIN@listserv.ua.edu Date 7/3/2023 2:45:28 PM Subject Re: SORTWK space usage Try adding this instead off sorted dd. //DFSPARM DD * OPTION DYNALLOC=(SYSDA,15),DYNSPC=768 /* You can add other options too. Regards, Doug On Jul 3, 2023, at 14:34, Michael Oujesky wrote: Just a warning, but the SORTWK specification decision depends on how SORT is provided the input data. If via SORTIN, then allowing SORT to make the determination should be fine. But when the incoming records are provided SORT one records at a time (piping, E15 exit, etc,) then nudging SORT's SORTWK decision by providing some SORTWK areas would probably be a better approach. At 01:13 PM 7/3/2023, Billy Ashton wrote: Thanks everyone - these are good recommendations. However, the guy who came to me first has a job that sorts 450 million records of 110 bytes, and I can't see how I could run SORT without specifying SORTWK DD statements. Are there special configuration options I can verify that we have in place to help my comfort level that I could eliminate SORTWK DD? If the programming team are not convinced, does this look right, based on the discussion - and based on a 100% Disk sort, which is not likely? 450mill * 110 * 1.5 = 7425000 = 69GB so maybe SORTWK01 - SORTWK10 //SORTWK01 DD UNIT=WORK,DSNTYPE=LARGE,SPACE=(CYL,(4000,1000)) to //SORTWK10 DD UNIT=WORK,DSNTYPE=LARGE,SPACE=(CYL,(4000,1000)) and this will give me 4000 + (15*1000) on each, or 4c primary + (up to 150 * 1000) secondary While we have been talking here, I have looked, and found some jobs with //SORTWK01 DD UNIT=(WORK,5)... and this will not work, is that right, Sri Kolusu? I would only get the first volume anyway? Thank you and best regards, Billy Ashton -- Original Message -- From "Farley, Peter" <031df298a9da-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 7/3/2023 12:44:43 PM Subject Re: SORTWK space usage I will add on to Sri's excellent answer with my very STRONG recommendation NOT to use hard-coded SORTWK's in your JCL. Both of the major SORT vendors (IBM and Syncsort) do a far, far better job of estimating necessary SORTWK space and memory utilization than any human could hope to do. I also STRONGLY recommend that you give your JCL and program-controlled SORT steps as much memory in the REGION parameter as your installation allows for production and test jobs. Both of the major SORT programs will figure out how much of that memory to use, whether and how much of it to use in the current WLM environment, and will make VERY effective use of as much of it as they can to cut down on SORT execution and elapsed time. Memory is (relatively) cheap, don't be afraid to use all you've got available to shorten your SORT ti
Re: SORTWK space usage
It is on disk, Doug. Thanks for the caveat! Thank you and best regards, Billy Ashton -- Original Message -- From "Doug Shupe" To IBM-MAIN@listserv.ua.edu Date 7/3/2023 4:07:05 PM Subject Re: SORTWK space usage Billy, Am only trying to present a possible option. The number of volumes and available space is shop dependent. Best to grab a sort manual and go through the possible option then test. The expert, Sri Kolusu many have thoughts on best practice. Is the input disk or tape ? It makes a difference.. Doug Stay Safe On Jul 3, 2023, at 15:48, Billy Ashton wrote: Doug, this raises a good point. If I have a COBOL program doing a SORT in the middle of the program (I am not sure if the big file is doing this, too or not), is using this DFSPARM the best way to force the use of 15 Dynalloc SORTWK files, so I would not have to code SORTWK DD statements? Thank you and best regards, Billy Ashton -- Original Message -- From "Doug" To IBM-MAIN@listserv.ua.edu Date 7/3/2023 2:45:28 PM Subject Re: SORTWK space usage Try adding this instead off sorted dd. //DFSPARM DD * OPTION DYNALLOC=(SYSDA,15),DYNSPC=768 /* You can add other options too. Regards, Doug On Jul 3, 2023, at 14:34, Michael Oujesky wrote: Just a warning, but the SORTWK specification decision depends on how SORT is provided the input data. If via SORTIN, then allowing SORT to make the determination should be fine. But when the incoming records are provided SORT one records at a time (piping, E15 exit, etc,) then nudging SORT's SORTWK decision by providing some SORTWK areas would probably be a better approach. At 01:13 PM 7/3/2023, Billy Ashton wrote: Thanks everyone - these are good recommendations. However, the guy who came to me first has a job that sorts 450 million records of 110 bytes, and I can't see how I could run SORT without specifying SORTWK DD statements. Are there special configuration options I can verify that we have in place to help my comfort level that I could eliminate SORTWK DD? If the programming team are not convinced, does this look right, based on the discussion - and based on a 100% Disk sort, which is not likely? 450mill * 110 * 1.5 = 7425000 = 69GB so maybe SORTWK01 - SORTWK10 //SORTWK01 DD UNIT=WORK,DSNTYPE=LARGE,SPACE=(CYL,(4000,1000)) to //SORTWK10 DD UNIT=WORK,DSNTYPE=LARGE,SPACE=(CYL,(4000,1000)) and this will give me 4000 + (15*1000) on each, or 4c primary + (up to 150 * 1000) secondary While we have been talking here, I have looked, and found some jobs with //SORTWK01 DD UNIT=(WORK,5)... and this will not work, is that right, Sri Kolusu? I would only get the first volume anyway? Thank you and best regards, Billy Ashton -- Original Message -- From "Farley, Peter" <031df298a9da-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 7/3/2023 12:44:43 PM Subject Re: SORTWK space usage I will add on to Sri's excellent answer with my very STRONG recommendation NOT to use hard-coded SORTWK's in your JCL. Both of the major SORT vendors (IBM and Syncsort) do a far, far better job of estimating necessary SORTWK space and memory utilization than any human could hope to do. I also STRONGLY recommend that you give your JCL and program-controlled SORT steps as much memory in the REGION parameter as your installation allows for production and test jobs. Both of the major SORT programs will figure out how much of that memory to use, whether and how much of it to use in the current WLM environment, and will make VERY effective use of as much of it as they can to cut down on SORT execution and elapsed time. Memory is (relatively) cheap, don't be afraid to use all you've got available to shorten your SORT times. My basic advice is don't try to second-guess these very intelligent programs - they each have more than half a century of practice and experience that none of us can match, even those of us who have been around that long. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Sri h Kolusu Sent: Monday, July 3, 2023 12:28 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: SORTWK space usage I will only get the primary space of 5000 cylinders, and the other 14x2000 cylinders is never used. Is that right? Billy, No. Incorrect. DFSORT will make use of BOTH primary and secondary space allocations ( 1 primary + 15 Secondary) for a total of 16 extents. So if you allocated 1 sortwk dataset with (CYL,(5000,2000)), then DFSORT would use 5000 + 15* 2000 = 5000 + 3 = 35,000 cylinders. Also note that the secondary extents will only come into picture ONLY when needed. Is there a written explanation I can forward to the programmers so they understand this? Also (since I know it will come), is there any good way to calculate how much DASD sortwork would be used? I know this depends on what is in
Re: SORTWK space usage
Doug, this raises a good point. If I have a COBOL program doing a SORT in the middle of the program (I am not sure if the big file is doing this, too or not), is using this DFSPARM the best way to force the use of 15 Dynalloc SORTWK files, so I would not have to code SORTWK DD statements? Thank you and best regards, Billy Ashton -- Original Message -- From "Doug" To IBM-MAIN@listserv.ua.edu Date 7/3/2023 2:45:28 PM Subject Re: SORTWK space usage Try adding this instead off sorted dd. //DFSPARM DD * OPTION DYNALLOC=(SYSDA,15),DYNSPC=768 /* You can add other options too. Regards, Doug On Jul 3, 2023, at 14:34, Michael Oujesky wrote: Just a warning, but the SORTWK specification decision depends on how SORT is provided the input data. If via SORTIN, then allowing SORT to make the determination should be fine. But when the incoming records are provided SORT one records at a time (piping, E15 exit, etc,) then nudging SORT's SORTWK decision by providing some SORTWK areas would probably be a better approach. At 01:13 PM 7/3/2023, Billy Ashton wrote: Thanks everyone - these are good recommendations. However, the guy who came to me first has a job that sorts 450 million records of 110 bytes, and I can't see how I could run SORT without specifying SORTWK DD statements. Are there special configuration options I can verify that we have in place to help my comfort level that I could eliminate SORTWK DD? If the programming team are not convinced, does this look right, based on the discussion - and based on a 100% Disk sort, which is not likely? 450mill * 110 * 1.5 = 7425000 = 69GB so maybe SORTWK01 - SORTWK10 //SORTWK01 DD UNIT=WORK,DSNTYPE=LARGE,SPACE=(CYL,(4000,1000)) to //SORTWK10 DD UNIT=WORK,DSNTYPE=LARGE,SPACE=(CYL,(4000,1000)) and this will give me 4000 + (15*1000) on each, or 4c primary + (up to 150 * 1000) secondary While we have been talking here, I have looked, and found some jobs with //SORTWK01 DD UNIT=(WORK,5)... and this will not work, is that right, Sri Kolusu? I would only get the first volume anyway? Thank you and best regards, Billy Ashton -- Original Message -- From "Farley, Peter" <031df298a9da-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 7/3/2023 12:44:43 PM Subject Re: SORTWK space usage I will add on to Sri's excellent answer with my very STRONG recommendation NOT to use hard-coded SORTWK's in your JCL. Both of the major SORT vendors (IBM and Syncsort) do a far, far better job of estimating necessary SORTWK space and memory utilization than any human could hope to do. I also STRONGLY recommend that you give your JCL and program-controlled SORT steps as much memory in the REGION parameter as your installation allows for production and test jobs. Both of the major SORT programs will figure out how much of that memory to use, whether and how much of it to use in the current WLM environment, and will make VERY effective use of as much of it as they can to cut down on SORT execution and elapsed time. Memory is (relatively) cheap, don't be afraid to use all you've got available to shorten your SORT times. My basic advice is don't try to second-guess these very intelligent programs - they each have more than half a century of practice and experience that none of us can match, even those of us who have been around that long. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Sri h Kolusu Sent: Monday, July 3, 2023 12:28 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: SORTWK space usage I will only get the primary space of 5000 cylinders, and the other 14x2000 cylinders is never used. Is that right? Billy, No. Incorrect. DFSORT will make use of BOTH primary and secondary space allocations ( 1 primary + 15 Secondary) for a total of 16 extents. So if you allocated 1 sortwk dataset with (CYL,(5000,2000)), then DFSORT would use 5000 + 15* 2000 = 5000 + 3 = 35,000 cylinders. Also note that the secondary extents will only come into picture ONLY when needed. Is there a written explanation I can forward to the programmers so they understand this? Also (since I know it will come), is there any good way to calculate how much DASD sortwork would be used? I know this depends on what is in memory at the time, but want to get a better handle on how Sort determines what it needs. I would suggest that you use DFSORT's Dynamic Allocation as it will allocate the required workspace optimally rather than programmers calculating it. The reason is you don't want to change the allocation every time there is an increase/decrease in the number of records to be sorted. Having said that, here is a general formula that you want to use. The amount of sortwk space required depends on the size of the file. It usually ranges from 1.3X to 1.8X of the size of the file to be sorted depending on the sort
Re: Broadcom SCRT
Broadcom was having some problems with the customer website earlier today, but I think they are back up and running now. Thank you and best regards, Billy Ashton -- Original Message -- From "rpinion865" <042a019916dd-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 7/3/2023 9:49:55 AM Subject Broadcom SCRT Anyone else having issues logging onto Broadcom SCRT website? Sent from Proton Mail mobile -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: SORTWK space usage
Thanks everyone - these are good recommendations. However, the guy who came to me first has a job that sorts 450 million records of 110 bytes, and I can't see how I could run SORT without specifying SORTWK DD statements. Are there special configuration options I can verify that we have in place to help my comfort level that I could eliminate SORTWK DD? If the programming team are not convinced, does this look right, based on the discussion - and based on a 100% Disk sort, which is not likely? 450mill * 110 * 1.5 = 7425000 = 69GB so maybe SORTWK01 - SORTWK10 //SORTWK01 DD UNIT=WORK,DSNTYPE=LARGE,SPACE=(CYL,(4000,1000)) to //SORTWK10 DD UNIT=WORK,DSNTYPE=LARGE,SPACE=(CYL,(4000,1000)) and this will give me 4000 + (15*1000) on each, or 4c primary + (up to 150 * 1000) secondary While we have been talking here, I have looked, and found some jobs with //SORTWK01 DD UNIT=(WORK,5)... and this will not work, is that right, Sri Kolusu? I would only get the first volume anyway? Thank you and best regards, Billy Ashton -- Original Message -- From "Farley, Peter" <031df298a9da-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 7/3/2023 12:44:43 PM Subject Re: SORTWK space usage I will add on to Sri's excellent answer with my very STRONG recommendation NOT to use hard-coded SORTWK's in your JCL. Both of the major SORT vendors (IBM and Syncsort) do a far, far better job of estimating necessary SORTWK space and memory utilization than any human could hope to do. I also STRONGLY recommend that you give your JCL and program-controlled SORT steps as much memory in the REGION parameter as your installation allows for production and test jobs. Both of the major SORT programs will figure out how much of that memory to use, whether and how much of it to use in the current WLM environment, and will make VERY effective use of as much of it as they can to cut down on SORT execution and elapsed time. Memory is (relatively) cheap, don't be afraid to use all you've got available to shorten your SORT times. My basic advice is don't try to second-guess these very intelligent programs - they each have more than half a century of practice and experience that none of us can match, even those of us who have been around that long. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Sri h Kolusu Sent: Monday, July 3, 2023 12:28 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: SORTWK space usage I will only get the primary space of 5000 cylinders, and the other 14x2000 cylinders is never used. Is that right? Billy, No. Incorrect. DFSORT will make use of BOTH primary and secondary space allocations ( 1 primary + 15 Secondary) for a total of 16 extents. So if you allocated 1 sortwk dataset with (CYL,(5000,2000)), then DFSORT would use 5000 + 15* 2000 = 5000 + 3 = 35,000 cylinders. Also note that the secondary extents will only come into picture ONLY when needed. Is there a written explanation I can forward to the programmers so they understand this? Also (since I know it will come), is there any good way to calculate how much DASD sortwork would be used? I know this depends on what is in memory at the time, but want to get a better handle on how Sort determines what it needs. I would suggest that you use DFSORT's Dynamic Allocation as it will allocate the required workspace optimally rather than programmers calculating it. The reason is you don't want to change the allocation every time there is an increase/decrease in the number of records to be sorted. Having said that, here is a general formula that you want to use. The amount of sortwk space required depends on the size of the file. It usually ranges from 1.3X to 1.8X of the size of the file to be sorted depending on the sorting path that DFSORT chose. Filesize = Number of records * Avg length of the record ( for Fixed length RECFM=F or FB , it is the LRECL value, or RECFM=V or RECFM=VB is the average length of the record) However, that range is applicable ONLY when the entire file is being sorted using Disk workspace. DFSORT has the capability of using memory (real and auxiliary storage) and if it runs out of it, it will then use disk workspace. Thanks, Kolusu -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...
SORTWK space usage
Hello DFSort experts! Where can I find the explanation of SORTWK space usage? I seem to recall reading that only the primary space is used on a SORTWK, so if I have //SORTWK DD SPACE=(CYL,(5000,2000))... I will only get the primary space of 5000 cylinders, and the other 14x2000 cylinders is never used. Is that right? Is there a written explanation I can forward to the programmers so they understand this? Also (since I know it will come), is there any good way to calculate how much DASD sortwork would be used? I know this depends on what is in memory at the time, but want to get a better handle on how Sort determines what it needs. Thanks, everyone! This might be a good discussion! Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Are there samples of COBOL methods or classes?
Hi, While working on the earlier problems I had, I ran into the concepts of COBOL Methods and Classes, and understand they can be used for Java in addition to regular COBOL programs. The documentation does not explain the "why" behind these or the "how" and "what", so I wonder if anyone has any business case explanations of what these are or samples of some COBOL-only implementations so I can see why I might want to use them and how to do it? I like to keep my COBOL current and if there is a way to use COBOL more effectively, I hope you can help me understand this! Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: COBOL Field Length problem
Just for fun, I tried another quick 6.3 test using the Repository setup. Here are the nested function results: Function Length(Function Trim(indexed field)) - Worked fine Function Length( Trim(indexed field)) - Worked fine Length(Function Trim(indexed field)) - Failed - only used indexedfield(1) Length( Trim(indexed field)) - Failed - only used indexedfield(1) So it seems the problem seems to be with the Length function, when called using the Repository Intrinsic functions description. Got to get this programmer back in the saddle, so that's all I have time for here. Thanks again! Billy -- Original Message -- From "Billy Ashton" To "IBM Mainframe Discussion List" Date 5/24/2023 1:24:05 PM Subject Re[2]: COBOL Field Length problem Michael, you gave me something interesting to try. It seems the Configuration Section use of the Repository for Intrinsic functions is new with 6.3, as it did not compile under 6.2. So...I removed that paragraph and added the explicit references to the FUNCTION keyword and got the same results that you did - everything worked fine. I then moved up to 6.3 with that working code, and guess what? It worked there, too. So it seems that there is some problem with how that Repository Intrinsic function thing is not working, and I haven't the time to chase it down right now. I will just use explicit FUNCTION calls to get past the problem. Thanks for pointing me the right direction through the fog! Billy Ashton -- Original Message -- From "Schmitt, Michael" To IBM-MAIN@listserv.ua.edu Date 5/24/2023 1:03:18 PM Subject Re: COBOL Field Length problem I don't have 6.3, but I tried your program on 6.2 after adding FUNCTION before the TRIM and LENGTH functions. The results seem to be as expected. For example: 0005 +1+2+3+4+5+6+ Original: > COMND VALUE3 21< Trim: > COMND VALUE3 21< Lengths: I1(0021) I2(0021) Hold(0021) By name(0021) 0006 +1+2+3+4+5+6+ Original: >COMND VALUE4 15 < Trim: >COMND VALUE4 15< Lengths: I1(0015) I2(0015) Hold(0015) By name(0015) I'd suggest reducing the test case down to the MINIMUM amount of code that demonstrates the issue. Then look at the p-map to see what the compiler is doing. -Original Message----- From: IBM Mainframe Discussion List On Behalf Of Billy Ashton Sent: Wednesday, May 24, 2023 11:25 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: COBOL Field Length problem Hey everyone - back again with another COBOL problem. Your help with my COPY REPLACING question was great and the programmer is quite happy with that solution. Now, he came to me with what looks like a problem, and I am not sure if we are doing something wrong, or if it is a bug in our Enterprise COBOL for z/OS 6.3.0 P220314 system. In a nutshell, when using the LENGTH(TRIM(some-field)) function against any elementary data item, it works great. However, when using it against an item within an occurs (think data table), every reference beyond 1 gets handled as item #1. For example, if I have a group with 8 items, the length of item #1 is right, but the length of item(2) through item(8) is always the value of item(1). The table index can be display numeric, packed, or binary, and the results are the same, so I don't think it is a problem with the index, but somehow the reference is not resolved correctly within the nested function. Maybe a short program would be helpful. I hope a 60 line program is ok! Let me know what you think is happening. IDENTIFICATION DIVISION. PROGRAM-ID. TSTPG002. ENVIRONMENT DIVISION. Configuration Section. Repository. Function All Intrinsic. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS. 05 INL-NO PIC S9(08) VALUE ZERO BINARY. 05 INL-I1 PIC S9(08) VALUE ZERO BINARY. 05 INL-I2 PIC S9(08) VALUE ZERO BINARY. 05 INL-H PIC S9(08) VALUE ZERO BINARY. 05 IN-GRP-X. 10 L1 PIC X(65) VALUE '* THIS_IS_A_COMMENT Here .28'. 10 L2 PIC X(65) VALUE SPACE. 10 L3 PIC X(65) VALUE 'COMND VALUE1 17'. 10 L4 PIC X(65) VALUE 'COMND VALUE2 21'. 10 L5 PIC X(65) VALUE ' COMND VALUE3 21'. 10 L6 PIC X(65) VALUE 'COMND VALUE4 15 '. 10 L7 PIC X(65) VALUE ' COMND VAL* 27 '. 10 L8 PIC X(65) VALUE '* THIS_IS_A_COMMENT... 29'. 05 REDEFINES IN-GRP-X OCCURS 8. 10 IN-LINE PIC X(65). 05 Hold
Re: COBOL Field Length problem
Michael, you gave me something interesting to try. It seems the Configuration Section use of the Repository for Intrinsic functions is new with 6.3, as it did not compile under 6.2. So...I removed that paragraph and added the explicit references to the FUNCTION keyword and got the same results that you did - everything worked fine. I then moved up to 6.3 with that working code, and guess what? It worked there, too. So it seems that there is some problem with how that Repository Intrinsic function thing is not working, and I haven't the time to chase it down right now. I will just use explicit FUNCTION calls to get past the problem. Thanks for pointing me the right direction through the fog! Billy Ashton -- Original Message -- From "Schmitt, Michael" To IBM-MAIN@listserv.ua.edu Date 5/24/2023 1:03:18 PM Subject Re: COBOL Field Length problem I don't have 6.3, but I tried your program on 6.2 after adding FUNCTION before the TRIM and LENGTH functions. The results seem to be as expected. For example: 0005 +1+2+3+4+5+6+ Original: > COMND VALUE3 21< Trim: > COMND VALUE3 21< Lengths: I1(0021) I2(0021) Hold(0021) By name(0021) 0006 +1+2+3+4+5+6+ Original: >COMND VALUE4 15 < Trim: >COMND VALUE4 15< Lengths: I1(0015) I2(0015) Hold(0015) By name(0015) I'd suggest reducing the test case down to the MINIMUM amount of code that demonstrates the issue. Then look at the p-map to see what the compiler is doing. -Original Message- From: IBM Mainframe Discussion List On Behalf Of Billy Ashton Sent: Wednesday, May 24, 2023 11:25 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: COBOL Field Length problem Hey everyone - back again with another COBOL problem. Your help with my COPY REPLACING question was great and the programmer is quite happy with that solution. Now, he came to me with what looks like a problem, and I am not sure if we are doing something wrong, or if it is a bug in our Enterprise COBOL for z/OS 6.3.0 P220314 system. In a nutshell, when using the LENGTH(TRIM(some-field)) function against any elementary data item, it works great. However, when using it against an item within an occurs (think data table), every reference beyond 1 gets handled as item #1. For example, if I have a group with 8 items, the length of item #1 is right, but the length of item(2) through item(8) is always the value of item(1). The table index can be display numeric, packed, or binary, and the results are the same, so I don't think it is a problem with the index, but somehow the reference is not resolved correctly within the nested function. Maybe a short program would be helpful. I hope a 60 line program is ok! Let me know what you think is happening. IDENTIFICATION DIVISION. PROGRAM-ID. TSTPG002. ENVIRONMENT DIVISION. Configuration Section. Repository. Function All Intrinsic. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS. 05 INL-NO PIC S9(08) VALUE ZERO BINARY. 05 INL-I1 PIC S9(08) VALUE ZERO BINARY. 05 INL-I2 PIC S9(08) VALUE ZERO BINARY. 05 INL-H PIC S9(08) VALUE ZERO BINARY. 05 IN-GRP-X. 10 L1 PIC X(65) VALUE '* THIS_IS_A_COMMENT Here .28'. 10 L2 PIC X(65) VALUE SPACE. 10 L3 PIC X(65) VALUE 'COMND VALUE1 17'. 10 L4 PIC X(65) VALUE 'COMND VALUE2 21'. 10 L5 PIC X(65) VALUE ' COMND VALUE3 21'. 10 L6 PIC X(65) VALUE 'COMND VALUE4 15 '. 10 L7 PIC X(65) VALUE ' COMND VAL* 27 '. 10 L8 PIC X(65) VALUE '* THIS_IS_A_COMMENT... 29'. 05 REDEFINES IN-GRP-X OCCURS 8. 10 IN-LINE PIC X(65). 05 Hold-L PIC X(65). 05 I1 PIC S9(08) VALUE ZERO Binary. 05 I2 PIC S9(08) VALUE ZERO. PROCEDURE DIVISION. PERFORM VARYING I1 FROM 1 BY 1 UNTIL I1 GREATER 8 Move I1 to I2 Move In-line(I1) to Hold-L Display I1 ' ' '+1+2+3+4' '+5+6+' Display ' Original: >' IN-LINE(I1) '<' Display ' Trim: >' Trim(In-line(I1) Trailing) '<' Compute INL-I1 = Length(Trim(In-line(I1) Trailing)) Compute INL-I2 = Length(Trim(In-line(I2) Trailing)) Compute INL-H = Length(Trim(Hold-L Trailing)) Evalu
COBOL Field Length problem
Hey everyone - back again with another COBOL problem. Your help with my COPY REPLACING question was great and the programmer is quite happy with that solution. Now, he came to me with what looks like a problem, and I am not sure if we are doing something wrong, or if it is a bug in our Enterprise COBOL for z/OS 6.3.0 P220314 system. In a nutshell, when using the LENGTH(TRIM(some-field)) function against any elementary data item, it works great. However, when using it against an item within an occurs (think data table), every reference beyond 1 gets handled as item #1. For example, if I have a group with 8 items, the length of item #1 is right, but the length of item(2) through item(8) is always the value of item(1). The table index can be display numeric, packed, or binary, and the results are the same, so I don't think it is a problem with the index, but somehow the reference is not resolved correctly within the nested function. Maybe a short program would be helpful. I hope a 60 line program is ok! Let me know what you think is happening. IDENTIFICATION DIVISION. PROGRAM-ID. TSTPG002. ENVIRONMENT DIVISION. Configuration Section. Repository. Function All Intrinsic. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS. 05 INL-NO PIC S9(08) VALUE ZERO BINARY. 05 INL-I1 PIC S9(08) VALUE ZERO BINARY. 05 INL-I2 PIC S9(08) VALUE ZERO BINARY. 05 INL-H PIC S9(08) VALUE ZERO BINARY. 05 IN-GRP-X. 10 L1 PIC X(65) VALUE '* THIS_IS_A_COMMENT Here .28'. 10 L2 PIC X(65) VALUE SPACE. 10 L3 PIC X(65) VALUE 'COMND VALUE1 17'. 10 L4 PIC X(65) VALUE 'COMND VALUE2 21'. 10 L5 PIC X(65) VALUE ' COMND VALUE3 21'. 10 L6 PIC X(65) VALUE 'COMND VALUE4 15 '. 10 L7 PIC X(65) VALUE ' COMND VAL* 27 '. 10 L8 PIC X(65) VALUE '* THIS_IS_A_COMMENT... 29'. 05 REDEFINES IN-GRP-X OCCURS 8. 10 IN-LINE PIC X(65). 05 Hold-L PIC X(65). 05 I1 PIC S9(08) VALUE ZERO Binary. 05 I2 PIC S9(08) VALUE ZERO. PROCEDURE DIVISION. PERFORM VARYING I1 FROM 1 BY 1 UNTIL I1 GREATER 8 Move I1 to I2 Move In-line(I1) to Hold-L Display I1 ' ' '+1+2+3+4' '+5+6+' Display ' Original: >' IN-LINE(I1) '<' Display ' Trim: >' Trim(In-line(I1) Trailing) '<' Compute INL-I1 = Length(Trim(In-line(I1) Trailing)) Compute INL-I2 = Length(Trim(In-line(I2) Trailing)) Compute INL-H = Length(Trim(Hold-L Trailing)) Evaluate TRUE When I1 = 1 Compute INL-NO = Length(Trim(L1 Trailing)) When I1 = 2 Compute INL-NO = Length(Trim(L2 Trailing)) When I1 = 3 Compute INL-NO = Length(Trim(L3 Trailing)) When I1 = 4 Compute INL-NO = Length(Trim(L4 Trailing)) When I1 = 5 Compute INL-NO = Length(Trim(L5 Trailing)) When I1 = 6 Compute INL-NO = Length(Trim(L6 Trailing)) When I1 = 7 Compute INL-NO = Length(Trim(L7 Trailing)) When Other Compute INL-NO = Length(Trim(L8 Trailing)) End-Evaluate Display ' Lengths:' ' I1(' INL-I1 ')' ' I2(' INL-I2 ')' ' Hold(' INL-H ')' ' By name(' INL-NO ')' Display ' ' END-PERFORM GOBACK. Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Using COBOL COPY/REPLACING in display literals?
I was able to use the String command successfully with the replacement. Thanks for the direction, Michael! Thank you and best regards, Billy Ashton -- Original Message -- From "Schmitt, Michael" To IBM-MAIN@listserv.ua.edu Date 5/22/2023 3:49:29 PM Subject Re: Using COBOL COPY/REPLACING in display literals? Copy FRED Replacing ==:CC:== By ==COMND== ':CC:' By 'COMND' Move SpacesTo w-in-:CC:-grp Move '*' To w-in-:CC:(1) Move w-set-max To w-in-:CC:-ct String 'Global Default Set for ' ':CC' into w-sysin-msg -Original Message- From: IBM Mainframe Discussion List On Behalf Of Farley, Peter Sent: Monday, May 22, 2023 2:43 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Using COBOL COPY/REPLACING in display literals? Billy, I do not believe it is possible to use COPY REPLACING to replace text inside a literal. I haven't the time ATM to research the relevant manual citation, but I believe the answer is that REPLACING is a COBOL WORD-based search-and-replace rather than a simple string search-and-replace, and a literal is a single COBOL-word token. With sufficient quoting you may be able to replace an entire (probably only relatively short in practical terms) literal string, but I am not even sure that can be done. I'll look up the manual reference (if there is one, and there may not be) later if I can find the time. Or maybe Tom Ross can pick up on your question and provide a more complete answer than mine. Another solution could be a string-based pre-processing step before a compile that does those literal replacements for you instead of asking the compiler to do it, but that has its own complexities (like wrapping literals with replacements that expand the literal beyond column 72). Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Billy Ashton Sent: Monday, May 22, 2023 3:21 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Using COBOL COPY/REPLACING in display literals? Hi guys and gals, I have an odd one that someone asked and I could not come up with an answer. In a COBOL program, using a COPY REPLACING directive, I can see the replacement of COBOL procedure statements fine, but when the tag is inside of a literal used for a DISPLAY, it is not replaced. Is this something that can't be done, or is there some special syntax for it? For example, my copy member (FRED) has this (plus a lot more): If sysin-dflt Move SpacesTo w-in-:CC:-grp Move '*' To w-in-:CC:(1) Move w-set-max To w-in-:CC:-ct Move 'Global Default set for :CC:' To w-sysin-msg Else ... So if I say Copy FRED Replacing ==:CC:== By ==COMND== I get this: If sysin-dflt Move SpacesTo w-in-COMND-grp Move '*' To w-in-COMND(1) Move w-set-max To w-in-COMND-ct Move 'Global Default set for :CC:' To w-sysin-msg Else ... I have looked through the manuals and done my Google diligence, but saw nothing about replacements (or lack of) in Procedure Division literals. Does anyone have a good answer here? Can my programmer do this or not, and if so, how? Thank you and best regards, Billy Ashton -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Using COBOL COPY/REPLACING in display literals?
Hi guys and gals, I have an odd one that someone asked and I could not come up with an answer. In a COBOL program, using a COPY REPLACING directive, I can see the replacement of COBOL procedure statements fine, but when the tag is inside of a literal used for a DISPLAY, it is not replaced. Is this something that can't be done, or is there some special syntax for it? For example, my copy member (FRED) has this (plus a lot more): If sysin-dflt Move SpacesTo w-in-:CC:-grp Move '*' To w-in-:CC:(1) Move w-set-max To w-in-:CC:-ct Move 'Global Default set for :CC:' To w-sysin-msg Else ... So if I say Copy FRED Replacing ==:CC:== By ==COMND== I get this: If sysin-dflt Move SpacesTo w-in-COMND-grp Move '*' To w-in-COMND(1) Move w-set-max To w-in-COMND-ct Move 'Global Default set for :CC:' To w-sysin-msg Else ... I have looked through the manuals and done my Google diligence, but saw nothing about replacements (or lack of) in Procedure Division literals. Does anyone have a good answer here? Can my programmer do this or not, and if so, how? Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Edit commands without a macro?
Hey Rexxers, I suspect that this is simple, but my old, feeble brain can't find the answer. Is it possible to use a Rexx program to edit a file (maybe a PDS member, maybe a flat file, shouldn't care) and to issue ISREDIT commands there, but not by using a separate macro? IOW, I want to have a single program that I can pass a file as a parm, and then this Rexx program edits the file, does some commands to find things and maybe change things, saves the file, displays some other stuff, and then ends. Is there a way to do this Edit stuff without a separate macro? Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: DFSORT to count and sum subsets of data
Kolusu, you are great and gracious! Thank you for this - it works as expected. I will dress up the file a bit with a good header, date and timestamp, and be able to turn it over to my user tomorrow. I greatly appreciate the teaching through this, too. Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 3/28/2023 4:00:27 PM Subject Re: DFSORT to count and sum subsets of data Wow, I did not want this to be so difficult...but given a choice, I would like the second approach Billy, It isn't that difficult; we just need to adjust the way we are summing the results. Since you did not want the department row, we just need to switch to using SUM instead of Reporting features. Since we are using SUM, we need to handle the overflow of data, so when summing the 9 byte items, we will pad 3 zeroes and sum it as 12 byte so that we account for overflow of the summation. As for the header, generating a symbol by reading the 2nd record is the simplest and easiest way. //** //* The filename is on the 2nd record of the file. use SORT* //* to read just that record and generate a symbol of the * //* filename. * //** //GETFNAME EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD DISP=(OLD,PASS),DSN=& //SORTOUT DD DSN=&,DISP=(,PASS),SPACE=(TRK,(1,1),RLSE) //SYSINDD * OPTION COPY,SKIPREC=1,STOPAFT=1 OUTREC BUILD=(02,44,JFY=(SHIFT=LEFT, LEAD=C'FILENAME,C''', TRAIL=C, LENGTH=80)) /* //** //* Generate summary report of "D" records * //** //GENREP EXEC PGM=SORT,COND=(0,LT) //SYSOUT DD SYSOUT=* //SYMNAMES DD DISP=(OLD,DELETE),DSN=& //SYMNOUT DD SYSOUT=* //SORTIN DD DISP=(OLD,PASS),DSN=& //SORTOUT DD SYSOUT=* //SYSINDD * INCLUDE COND=(019,03,FS,EQ,NUM,AND, # Field is numeric and 022,01,CH,EQ,C'D') # Type = D INREC BUILD=(001,03, # Department 3C'0', # pad 3 zeros 102,09,UFF,M11,LENGTH=9,# item qty C'0001')# init counter SORT FIELDS=(01,03,CH,A) # Department SUM FIELDS=(04,12,ZD, # item 16,08,ZD) # count OUTFIL REMOVECC, BUILD=(C' DEPARTMENT ', 01,03, 16,08,ZD,M10,LENGTH=8, C' ARTICLES, TOTAL ITEMS: ', 04,12,ZD,M10,LENGTH=12), HEADER1=(FILENAME), TRAILER1=('*** TOTAL *** : ', TOT=(16,08,ZD,M10,LENGTH=8), ' ARTICLES, TOTAL ITEMS: ', TOT=(04,12,ZD,M10,LENGTH=12)) /* but for the sake of learning (if you don't mind), I would welcome the first option, also, to make my training more complete! Just run your existing control cards without any D records and see the output. (You will not have the filename as header, but you will have 1 row for department and total row) Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: DFSORT to count and sum subsets of data
Wow, I did not want this to be so difficult...but given a choice, I would like the second approach, as it is cleaner, but for the sake of learning (if you don't mind), I would welcome the first option, also, to make my training more complete! Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 3/28/2023 3:14:21 PM Subject Re: DFSORT to count and sum subsets of data Kolusu, this works well when I have records to work with, but if I have no "D" records (sorry for the fat finger earlier...) to count or sum, I would still like to produce a summary. There will be no DEPARTMENT rows, but I would like to have the file name Header1, and a TOTAL line with the 0 Articles and 0 Items. Billy, There are different ways of getting results. When the input does NOT have a "D" record, it will still generate the department row as you are using trailer3 and it will have ZERO count and ZERO total. Something like this PROD.A31XAD.IDARTA00 DEPARTMENT0 ARTICLES, TOTAL ITEMS:0 *** TOTAL *** :0 ARTICLES, TOTAL ITEMS:0 But if you insist on NOT having the Department record, then we need to do it slightly different. PROD.A31XAD.IDARTA00 *** TOTAL *** :0 ARTICLES, TOTAL ITEMS:0 What is the preferred output ? the First one or the second one? Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: DFSORT to count and sum subsets of data
Kolusu, this works well when I have records to work with, but if I have no "D" records (sorry for the fat finger earlier...) to count or sum, I would still like to produce a summary. There will be no DEPARTMENT rows, but I would like to have the file name Header1, and a TOTAL line with the 0 Articles and 0 Items. Is this possible? Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 3/28/2023 12:09:14 PM Subject Re: DFSORT to count and sum subsets of data Kolusu, this works great, and the end user is happy with the detail. Now, he wants one additional tweak. The top of the file (within the first two rows) has this: Billy, If your intention is to pick the 2nd or 3rd record, all you need to do is add the sequence number to the records and then use that in WHEN=GROUP to push it all records. The numeric validation and D record validation can also be done on OUTFIL. Use the control cards.(This uses the info from the 2nd record) //SYSINDD * INREC IFTHEN=(WHEN=INIT, OVERLAY=(134:SEQNUM,8,ZD)), IFTHEN=(WHEN=GROUP,BEGIN=(134,8,ZD,EQ,2), PUSH=(143:02,44)) SORT FIELDS=(01,03,CH,A) OUTFIL REMOVECC,NODETAIL, INCLUDE=(19,03,FS,EQ,NUM,AND, 22,01,CH,EQ,C'D'), HEADER1=(143,044), SECTIONS=(01,03, TRAILER3=(' DEPARTMENT ', 01,03, COUNT=(M10,LENGTH=8), ' ARTICLES, TOTAL ITEMS: ', TOT=(102,09,UFF,M10,LENGTH=12))), TRAILER1=('*** TOTAL *** : ', COUNT=(M10,LENGTH=8), ' ARTICLES, TOTAL ITEMS: ', TOT=(102,09,UFF,M10,LENGTH=12)) /* Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: DFSORT to count and sum subsets of data
Kolusu, this works great, and the end user is happy with the detail. Now, he wants one additional tweak. The top of the file (within the first two rows) has this: PROD.A31XAD.IDARTA00 ARTICLE LISTING BY DEPARTMENT (This starts in Col 2) (This starts in Col 56) I managed to include this file name by pushing it onto the unneeded area in every row like this: INREC IFTHEN=(WHEN=GROUP,BEGIN=(56,15,CH,EQ,C'ARTICLE LISTING'), PUSH=(30:2,44)) and then I could include it in a Header1 clause. However, if there are no "L" records in the file, there is no file name in col 30 to use. Is there some other way I can capture this filename from the first or second row, and then use it in my OUTFIL Header1 clause even if there are no detail records to Count or Tot? Billy -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 3/27/2023 12:29:22 PM Subject Re: DFSORT to count and sum subsets of data What I want to do is produce a single line for each Department (cols 1-3), that tells me the number of articles (Count of all rows with a numeric value in cols 19-21, and an Indicator in col 22 of "D"), and a sum of the Counter (cols 102-110, pic 9), with a grand total. It will look like this: Billy, It is quite simple. Use the following control cards. //SYSINDD * INCLUDE COND=(22,01,CH,EQ,C'D') SORT FIELDS=(01,03,CH,A) OUTFIL REMOVECC,NODETAIL, SECTIONS=(01,03, TRAILER3=(' DEPARTMENT ', 01,03, COUNT=(M10,LENGTH=8), ' ARTICLES, TOTAL ITEMS: ', TOT=(102,09,UFF,M10,LENGTH=12))), TRAILER1=('*** TOTAL *** : ', COUNT=(M10,LENGTH=8), ' ARTICLES, TOTAL ITEMS: ', TOT=(102,09,UFF,M10,LENGTH=12)) /* If you do need to validate the contents of 19-21 for numeric , then you just need to use the following control cards. Just add an IFTHEN statement for numeric check. //SYSINDD * INCLUDE COND=(22,01,CH,EQ,C'D') INREC IFTHEN=(WHEN=(19,3,FS,EQ,NUM), OVERLAY=(130:C'1')) SORT FIELDS=(01,03,CH,A) OUTFIL REMOVECC,NODETAIL, SECTIONS=(01,03, TRAILER3=(' DEPARTMENT ', 01,03, TOT=(130,01,ZD,M10,LENGTH=8), ' ARTICLES, TOTAL ITEMS: ', TOT=(102,09,UFF,M10,LENGTH=12))), TRAILER1=('*** TOTAL *** : ', TOT=(130,01,ZD,M10,LENGTH=8), ' ARTICLES, TOTAL ITEMS: ', TOT=(102,09,UFF,M10,LENGTH=12)) /* If you intend to have the spaces trimmed in the output, let me know and I will suggest an alternative. Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
DFSORT to count and sum subsets of data
Hey everyone - happy Monday! I am trying to come up with a single SORT step to give me counts and a sum of a field on subsets of data, and using control breaks. Here is a sample of my input with lines shortened for the email: A01DDATE 001D<< Cols 23 to 101 MISCELLANEOUS DATA >> 10 2 A01DDATE 001W<< Cols 23 to 101 MISCELLANEOUS DATA >> 93 2 A01MEXTRA 047D<< Cols 23 to 101 MISCELLANEOUS DATA >>3 2 A01MEXTRA 022P<< Cols 23 to 101 MISCELLANEOUS DATA >>5 2 A01MEXTRA 019R<< Cols 23 to 101 MISCELLANEOUS DATA >> 35 2 A02QTRAN 103D<< Cols 23 to 101 MISCELLANEOUS DATA >> 802 2 A02QTRAN 014R<< Cols 23 to 101 MISCELLANEOUS DATA >>9 2 A02QTRAN 012T<< Cols 23 to 101 MISCELLANEOUS DATA >> 41 2 A02QTRAN 083V<< Cols 23 to 101 MISCELLANEOUS DATA >> 12 2 A02ZHORIZ 023D<< Cols 23 to 101 MISCELLANEOUS DATA >> 456 2 A02ZHORIZ 011P<< Cols 23 to 101 MISCELLANEOUS DATA >> 81 2 A02ZVERTICAL 011D<< Cols 23 to 101 MISCELLANEOUS DATA >> 773 2 A02ZVERTICAL 003M<< Cols 23 to 101 MISCELLANEOUS DATA >>1 2 This is the layout: 1 - len 3, Dept 19 - len 3, numeric 22 - len 1, Indicator 23 - len 77, miscellaneous 102 - len 9, Counter 111 - len 19, miscellaneous What I want to do is produce a single line for each Department (cols 1-3), that tells me the number of articles (Count of all rows with a numeric value in cols 19-21, and an Indicator in col 22 of "D"), and a sum of the Counter (cols 102-110, pic 9), with a grand total. It will look like this: Department A01: 2 articles, total items: 13 (# = suppressed zeros) Department A02: ##3 articles, total items: ###2031 *** TOTAL *** : ##5 articles, total items: ###2044 I can get the count to work through a simple sum, but I can't get the number of articles to break on the Department code (there could be 1-to-n departments in each file). Can someone help me with what should be fairly simple here? Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: location of JCL for started task
Bill, does this help at all: https://www.ibm.com/docs/en/zos/2.2.0?topic=language-setting-up-started-tasks-master-jcl Thank you and best regards, Billy Ashton -- Original Message -- From "Bill Giannelli" To IBM-MAIN@listserv.ua.edu Date 3/18/2023 1:42:45 PM Subject Re: location of JCL for started task hi Steve, We have IOF not SDSF. But I do not see anywhere where it indicates the pds where the JCL came from for that proc. thanks Bill On Sat, 18 Mar 2023 12:30:25 -0500, Steve Beaver wrote: Go into the running STC in SDSF and in the section that gives the stats it will be first line Sent from my iPhone No one said I could type with one thumb On Mar 18, 2023, at 12:26, Bill Giannelli wrote: we have a PDS for job cards for started tasks, which reference our system proclib. I have a started task that is executing, yet I can not find the actual JCL (Jobcard, etc). I can find the proc. How can I find where the JCL is being read from? thanks Bill -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: JCL Procedure help
I agree with Steve's approach...since you want the job to be on a certain system, le the check be in the job. This keeps the proc concentrated on the work it needs and less cluttered. Thank you and best regards, Billy Ashton -- Original Message -- From "Steve Smith" To IBM-MAIN@listserv.ua.edu Date 2/8/2023 9:17:22 AM Subject Re: JCL Procedure help You can probably just invoke the original program in your REXX (ADDRESS LINKMVS, etc.) when it's on the correct system. Then your proc is still one step. sas On Wed, Feb 8, 2023 at 8:56 AM Willy Jensen wrote: Since you are running a REXX anyway, that REXX could copy DDname SYSIN to a temporary dataset, which is then used for SYSIN in the 2nd step, A simple REPRO INFILE(SYSIN) OUTFILE(TEMP) should do it. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: JCL // SET SYMBOL indirection
Unfortunately, you can not have "nested" symbols...just one and done. Thank you and best regards, Billy Ashton -- Original Message -- From "Robert Garrett" To IBM-MAIN@listserv.ua.edu Date 1/31/2023 7:07:31 PM Subject JCL // SET SYMBOL indirection I love symbols. I've been trying to figure out if a level of indirection is possible. Here's an example that both doesn't work and isn't' even syntactically correct, but hopefully will serve to illustrate what I'm trying to do: //SYM1 SET SYM1=VALUE1 //SYM2 SET SYM2=VALUE2 //TARGET SET TARGET=SYM1 //RESULT SET RESULT=& (and end up with being set to VALUE1 and not SYM1) I know it'll be tempting to ask "why?" but trust me, I have a good reason. Thanks, Rob -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: DFSORT maximum input records
I have run into large files with DFSORT, and when I asked them they told me that there are hard limits: * EQUALS in effect - 4 294 967 295 records * VLSHRT in effect - 2 147 483 647 records * Blockset technique not selected - 2 147 483 647 records I wonder if you could do something in your process to either segment the sorts into two pieces based on the high order part of the sort key, or if you could split, sort, and merge files outside of your program. It sounds to me that it is a special program that has to touch 4.3billion records in its run. Thank you and best regards, Billy Ashton -- Original Message -- From "Charles Hardee" To IBM-MAIN@listserv.ua.edu Date 1/12/2023 11:42:51 AM Subject DFSORT maximum input records Hello Listers, I've searched the IBM-MAIN archives and found nothing to help me so I thought I'd better ask the question. I am trying to sort roughly 4295217295, records using DFSORT. DFSORT issues a message that I have exceeded the sort input record maximum. It appears that this maximum is 4294967295. Since this is a program calling sort internally, and does so several times, I cannot do the "normal" thing of splitting the file down into smaller files, sort them, then merge them back together. Anyone have any thoughts on this? Thanks, Chuck -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Rexx function STORAGE with weird behavior on Netview
Paul, the Storage command works on Hex values by default, so Storage(10,4) is dealing with the address x'0010'. Thank you and best regards, Billy Ashton -- Original Message -- From "Paul Gorlinsky" To IBM-MAIN@listserv.ua.edu Date 12/19/2022 8:52:02 AM Subject Re: Rexx function STORAGE with weird behavior on Netview If you are trying to get the cut the address is x10 not 10 try 16 instead of 10… boundary issue if you use 10… -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Rexx function STORAGE with weird behavior on Netview
Hi Jack, I would recommend that you put a Call Trace("I") statement before this CVT variable set statement, and also add a Say C2X(Storage(10,4)) statement before it, so you can see what is there. This piece of code would look like: Call Trace("I") Say C2X(Storage(10,4)) CVT= C2D(Storage(10,4)) Call Trace("O") /* though you won't get here if it fails...*/ Thank you and best regards, Billy Ashton -- Original Message -- From "Jack Zukt" To IBM-MAIN@listserv.ua.edu Date 12/19/2022 8:20:10 AM Subject Rexx function STORAGE with weird behavior on Netview Hi, My colleagues come to me with a weird situation for which I cannot find an explanation. You are probably familiar with the IPLINFO REXX. It works just fine but there is one system on which, when invoked by NETVIEW, the CVT = C2d(Storage(10,4))/* point to CVT */ instruction fails by not returning a value: IRX0044I Error running ASVTASID, line 42: Function did not return data As I said before, it works fine on every system and when running under NETVIEW, except on this one system. Any ideas where to look for the reason for this behavior? Thank you all for your help, Regards, Jack -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: How to SORT Variable records with OVERLAY
Hi Kolusu...I have to toss in the white flag here, as I tried a few different things unsuccessfully. I have attached a groomed file of the input (it is the output of an IDCAMS Listcat for certain sales report files), and below is a second file for my second part of this. Here is what I am trying to get: 1. From the groomed File1 - a VBA 133 file of LISTCAT data - I am trying to get a list of the files and their created date, sorted in order of division, order number, and descending document creation date. 2. Then, I am trying to match that against the second file which has the latest processed document for each order to show two different reports: A. Any document that has not been processed for an order (1 to n records each), and B. The most recent document that has not been processed (1 record only) Here is my SORT for #1, which works great to copy, but does not work to sort: //SYSINDD * OPTION VLSCMP,VLSHRT SORT FIELDS=COPY * SORT FIELDS=(116,08,CH,A,124,03,CH,A,135,7,CH,D) * INCLUDE COND=(06,07,CH,EQ,C'NONVSAM',OR, 42,10,CH,EQ,C'CREATION--') * INREC IFOUTLEN=150,IFTHEN=(WHEN=GROUP, BEGIN=(06,07,CH,EQ,C'NONVSAM'), PUSH=(69:22,44)), IFTHEN=(WHEN=(42,10,CH,EQ,C'CREATION--'), PARSE=(%=(ENDBEFR=C'.',ABSPOS=65), %=(ENDBEFR=C'.'), %01=(STARTAFT=C'SLDIV',Division ENDBEFR=C'.',FIXLEN=3), %02=(ENDBEFR=C'.',FIXLEN=8), Order Num %03=(ENDBEFR=C'.',FIXLEN=8)), Doc ID OVERLAY=(115:C'Y', 116:%03, 124:%01, 127:%02, 135:58,08,UFF,M11,LENGTH=7, 142:135,07,Y4T,TOGREG=Y4T, 150:X)) * OUTFIL VTOF, INCLUDE=(115,01,CH,EQ,C'Y'), BUILD=(124,03,X, # Division 116,08,X, # Doc ID 127,08,X, # Order Num 19X, # Filler 142,08,X, # Cre Date Greg 135,07,X) # Cre Date Jul /* For #2, I am trying to create report #1 with a title "Current Order Documents/By Division and Document Type". There are no control breaks, just a list, showing any items from #1, above, in Ascending Division and Order, and Descending Document Createdate. Here is a sample: Div OrderDocument Cre Date 120 $3B37368 DORDP001 20201204 120 @7415755 DPINS003 20201127 120 @7415755 DORDP001 20201129 120 @7415755 DPAYI022 20201204 120 @7415755 DXCHP3R4 20201220 136 $G855813 DORDC244 20210505 242 @Q405827 DPINS003 20200808 242 @Q405827 DPINB022 20200808 242 @Q405827 DORDPP22 20200812 Report #2 is called "Orders With All Documents Current" and is a reflection of orders with the most recent (file2) and latest document (file1) being the same. There is one record per order. Div OrderDocument 120 $3B37368 DORDP001 (120 @7415755 is not here bc file2 has DPAYI022, and file1 has a later DXCHP3R40 document) 136 $G855813 DORDC244 242 @Q405827 DREFC001 File1 is attached (the LISTCAT output) File2 a FB 40 file with 120 $3B37368 DORDP001 120 @7415755 DPAYI022 136 $G855813 DORDC244 242 @Q405827 DREFC001 251 DM405862 DORDPP22 251 DM415866 DORDC244 251 DM423871 DINVP002 281 RB415889 DSPL1PR4 281 TA720006 DORDP042 281 TA916078 DPINM111 281 VJ124311 DRET1PR4 288 @@366084 DINVC011 288 @N416086 DRETW023 288 MM737722 DCRMV002 Kolusu, I appreciate whatever guidance you can give me here. I am sure I could write a program to do this two-file match, but I am trying to open eyes to the possibility of a faster-running SORT process. Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 12/12/2022 5:02:55 PM Subject Re: How to SORT Variable records with OVERLAY Because my input is a VBA file (out of my control), some of the records are much shorter than my SORT FIELDS location. Billy, Ideally you can use VLSHRT for padding short records for SORTING. However, if you use INREC/OUTREC , it will not work. So, if you want to use INREC editing you need to PUSH the contents right after RDW to retain the variable length records. If you don't care about variable lengths of the output file then use IFOUTLEN= nnn ( where nnn= max length of the overlay/push record). Alternatively, if you show me the control cards I can show you the optimal way of achieving the results. Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.
How to SORT Variable records with OVERLAY
Hi all, I am taking a file and using PUSH and OVERLAY to condense multiple input lines into a single line. That all works fine and I even get the correct format output when I use OPTION COPY or SORT FIELDS=COPY. However, I want to sort on my OVERLAY area fields, but I get an error message ICE218A 3 117 BYTE VARIABLE RECORD IS SHORTER THAN 138 BYTE MINIMUM FOR FIELDS Because my input is a VBA file (out of my control), some of the records are much shorter than my SORT FIELDS location. What do I need to do to use SORT FIELDS=(...) here? Do I need to just overlay the unneeded columns at the beginning of the record? All my sort keys will be shorter than the shortest record in the file, but I expected that by using INCLUDE statements to only keep the long records I needed, I would not run into this. My control cards say OPTION VLSCMP SORT FIELDS=(set1,set2, set3) INCLUDE COND=...,OR, ... INREC with multiple IFTHEN and PUSH and OVERLAYs OUTFIL VTOF, INCLUDE,BUILD There must be something simple I am missing (and there will be another question tomorrow if I get this fixed). Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Using JCL variables with DFSORT
Jack, here are a few thoughts: 1. Be sure you have a line like this before you SET the variable: // EXPORT SYMLIST=(*) 2. On the input to the sort, specify it like this: //SYSIN DD *,SYMBOLS=(JCLONLY,SYMOUT) 3. Add a DD statement for the output: //SYMOUT DD SYSOUT=* Then, when you run it, look at the SYMOUT DD statement to see the before and after image of the statement. Let us know what you see for the symbol. Thank you and best regards, Billy Ashton -- Original Message -- From "Jack Zukt" To IBM-MAIN@listserv.ua.edu Date 11/3/2022 2:08:46 PM Subject Re: Using JCL variables with DFSORT Hi Massimo, Thank you for your input. I have tried that approach, that I have used on other JCL without a glitch, but it has not worked with this particular situation and I have not been able to figure out why. Regards Jack On Thu, Nov 3, 2022, 17:42 Massimo Biancucci wrote: Jack, I usually use JCLVAR this way (I think you need at least zOS 2.3 or 2.4): // EXPORT SYMLYST=* // SET EXTNUM=200 //ST010 EXEC PGM=SORT //SYSIN DD *,SYMBOLS=JCLONLY INCLUDE COND=(INP_EXTNTS,GT,) /* JES should change SYSIN before seeding SORT. Best regards. Max Il giorno gio 3 nov 2022 alle ore 18:23 Jack Zukt ha scritto: > Hi, > I am trying to improve a SORT by using a variable to specify a Include > variable. > I defined the variable by means of a > //SET#EXTN SET EXTNUM=200 > and then I used > //STEP0100 EXEC PGM=SORT,PARM='JP1""' > and > INCLUDE=(INP_EXTNTS,GT,JP1), > > The problem, I think, is that the "200" is then used as C'200' and the > INP_EXTNTS is numeric, > > INP_EXTNTS,*,04,BI > and > SUM FIELDS=(INP_EXTNTS, > > so no records are selected. > Is there a way around this? > > Thanks for your help > Jack > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Variable Sort Parsing
Kolusu, this worked great! I went with the Version 2 selection, and replaced the pipe delimiter with just a simple space. Thanks again - one day, I hope to be able to do these simple things myself! Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 10/20/2022 12:15:22 AM Subject Re: Variable Sort Parsing 2. The input is a FB file of 150, and these records are just space padded. The other log records in the file are of all different lengths, with some using the whole 150. Billy, It is quite simple to parse out the contents. I am going to 2 show different versions. Version 1 : will Parse ALL fields and then we pick and choose which fields we need Version 2 : Will Parse ONLY specific fields of interest. FIXLEN is the parm which determines the length of the parsed field, so adjust it according to your needs. I added a Delimiter of '|' to distinguish the fields. You can remove it if you don't need it Version 1 : //STEP0100 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD DISP=SHR,DSN=your Input FB 150 byte file //SORTOUT DD SYSOUT=* //SYSINDD * OPTION COPY INCLUDE COND=(001,150,SS,EQ,C'MSG004CI') INREC IFTHEN=(WHEN=INIT, BUILD=(001,150,SQZ=(SHIFT=LEFT,MID=C' '))), IFTHEN=(WHEN=INIT, PARSE=(%01=(ENDBEFR=BLANKS,FIXLEN=08), # Job Time %02=(ENDBEFR=BLANKS,FIXLEN=08), # Job num %03=(ENDBEFR=BLANKS,FIXLEN=08), # Job name %04=(ENDBEFR=BLANKS,FIXLEN=08), # Msg number %05=(STARTAFT=C'PARM ', ENDBEFR=C': ',FIXLEN=15), # Prog parm %06=(ENDBEFR=C',',FIXLEN=08),# Job Date %07=(STARTAFT=C'(', ENDBEFR=C') ',FIXLEN=10), # Run Type %08=(ENDBEFR=BLANKS,FIXLEN=15), # Location %09=(ENDBEFR=BLANKS,FIXLEN=06)), # Indicator BUILD=(%03, # Job name C'|',# Delimiter %05, # Prog Parm C'|',# Delimiter %06, # Job Date C'|',# Delimiter %07, # Run Type C'|',# Delimiter %08, # Location C'|',# Delimiter %09, # Indicator C'|')) # Delimiter /* The output from this is PAYW015A|SCHEDULED |20221008|WEEKLY|ALLSITES |10.4 | PAYW052X|REQUEST|20221012|DAILY |OH03 |10.6 | BILLW015|new|20221016|hourly|ASH01 |10.2 | Version 2: Notice the ignored fields with % and pay attention to FIXLEN parm //SYSINDD * OPTION COPY INCLUDE COND=(001,150,SS,EQ,C'MSG004CI') INREC IFTHEN=(WHEN=INIT, BUILD=(001,150,SQZ=(SHIFT=LEFT,MID=C' '))), IFTHEN=(WHEN=INIT, PARSE=(%=(ENDBEFR=BLANKS), # Job Time %=(ENDBEFR=BLANKS), # Job num %03=(ENDBEFR=BLANKS,FIXLEN=08), # Job name %=(ENDBEFR=BLANKS), # Msg number %05=(STARTAFT=C'PARM ', ENDBEFR=C': ',FIXLEN=03), # Prog parm %06=(ENDBEFR=C',',FIXLEN=08),# Job Date %07=(STARTAFT=C'(', ENDBEFR=C') ',FIXLEN=01), # Run Type %08=(ENDBEFR=BLANKS,FIXLEN=15), # Location %09=(ENDBEFR=BLANKS,FIXLEN=06)), # Indicator BUILD=(%03, # Job name C'|',# Delimiter %05, # Prog Parm C'|',# Delimiter %06, # Job Date C'|',# Delimiter %07, # Run Type C'|',# Delimiter %08, # Location C'|',# Delimiter %09, # Indicator C'|')) # Delimiter /* The output from this is PAYW015A|SCH|20221008|W|ALLSITES |10.4 | PAYW052X|REQ|20221012|D|OH03 |10.6 | BILLW015|new|20221016|h|ASH01 |10.2 | Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access in
Re: Variable Sort Parsing
Hi Kolusu, and thanks for looking into this. 1. No, these are two different records, with different parameters on them. They are both MSG004CI, but have different data fields. I tried to show just two with the shortest and the longest length. Each message is one line with: time Jobnum jobname Msgkey - "Program Parm" type date , runtype() location numeric-code 2. The input is a FB file of 150, and these records are just space padded. The other log records in the file are of all different lengths, with some using the whole 150. Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 10/19/2022 8:57:22 PM Subject Re: Variable Sort Parsing This will be fed into another reporting program to generate different reports, along with other operational data. Here are the two basic kinds of formats: 01.34.15 JOB47986 PAYW015A MSG004CI - PROGRAM PARM SCHEDULED: 20221008, RUNTYPE(WEEKLY) ALLSITES 10.4 >> 01.34.15 JOB47986 PAYW052X MSG004CI - PROGRAM PARM REQUEST: 20221012, RUNTYPE(DAILY) OH03 10.6 Hi Billy, You have the right idea of using PARSE in DFSORT to extract the data. However, I need a few more details. 1. The sample input that you have shown for EACH MSG004CI is split into 2 records. Is that right ? If so, can there be a single line message for MSG004CI ? 2. What is the LRECL and RECFM of the input file? Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Variable Sort Parsing
Hi all, I have a SORT problem I can't quite get my head around. I think I want to use PARSE, but can't figure out if there is an easy way to do it. I have an application log file that contains joblogs of thousands of jobs a day, all with different records. I am interested in only getting records with a key value of MSG004CI . However, the records have variable format, and I would like to have SORT not only extract the records, but also just give me the fields I need. This will be fed into another reporting program to generate different reports, along with other operational data. Here are the two basic kinds of formats: 01.34.15 JOB47986 PAYW015A MSG004CI - PROGRAM PARM SCHEDULED: 20221008, RUNTYPE(WEEKLY) ALLSITES 10.4 01.34.15 JOB47986 PAYW052X MSG004CI - PROGRAM PARM REQUEST: 20221012, RUNTYPE(DAILY) OH03 10.6 Here are my requirements: 1. We will extract if the message is MSG004CI and then I need the jobname word that comes before that. 2. Next, I need to know how the job was run - either Scheduled or Request and the date it was run (follows the type). Output is either SCH or REQ then the date. 3. Then, I want to know what type of run. This can be Daily, Weekly, Monthly, or Yearly. Output D, W, M, or Y. 4. Next, I need to know the locations processed: This is a variable length value, ALLSITES is the longest, OH03 is the shortest, with others of other lengths between. 5. Finally, I need the numeric indicator at the end of the line. So given the above records, my output would be PAYW015A SCH 20221008 W ALLSITES 10.4 PAYW052X REQ 20221012 D OH03 10.6spaces to allow me to have a fixed format> I think I would use Parse to capture these 6 fields, but don't know how to allow for the different positions they could have. Can you help with the Inrec definition? Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Is there such a thing as JCL to transfer files using https?
Hi everyone! You have been so helpful in the past to help me with getting my file transfers working with sftp, and now, we have a manager who wants to explore using https in batch like we do online in our browsers. He thinks we can secure our ports better if we are not using as many. We would be using it to move files back and forth with a couple of our major business partners. Is such a thing possible? What do I need to think about if this is possible? Does anyone have any sample JCL they have used and would be able to share with me? I have tried to research this, but really haven't found anything useful (I guess this should be a clue). Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: REXX Testing a bit?
If you will be doing many of these kinds of tests, you can create a simple proc to tell you if the bit is on: BitOn: If Arg(2) > Length(Arg(1)) * 8 Then Return 9; tval = Overlay('1',X2B(C2X(Copies('00'x,Length(Arg(1),Arg(2),1); tval = X2C(B2X(tval)); Return C2X(BitAnd(Arg(1),tval)) > 0; The first test will return a 9 if you make an error, like specify Bit 9 of a 1-byte field. Otherwise, it will return a 1 or 0 as True or False indicating the bit is on or not. Note that it will work on multi-byte or single-byte values. Examples: If BitOn("AC",15) Then Say "It is on"---> RC (1): It is on If BitOn("ABC",26) Then Say "It is on" ---> RC (9): null If BitOn("A",4) Then Say "It is on"---> RC (0): null Thank you and best regards, Billy Ashton -- Original Message -- From "Billy Ashton" To "IBM Mainframe Discussion List" Date 8/2/2022 8:40:49 AM Subject Re: REXX Testing a bit? I usually am displaying something depending on the bit setting, so I wrote a small proc: /** * BITSW function: to test a bit for a value and return translation * **/ BitSw: tr$ = Trace(o);; test_str = Arg(1); test_bit = Arg(2); test_ret = Arg(3); Return Translate(Substr(x2b(test_str),test_bit,1),test_ret,"01"); You could use it like this: mystring = BitSw(flag1,6,"NY") This means: Test the setting of bit 6 of the flag1 variable Translate to the values I pass in (N, Y) from the bit value of 0, 1 Another simple way you could do it is to build your test mask (bit 6 on), and use this: If C2X(Bitand(flag1,'0100'b)) > 0 Then say "got it" Thank you and best regards, Billy Ashton -- Original Message -- From "Lionel B. Dyck" To IBM-MAIN@listserv.ua.edu Date 8/2/2022 7:50:10 AM Subject REXX Testing a bit? What is the best way to test if a bit is 1 or 0? I'm doing this but was thinking there may/probably is a better way: If substr(x2b(c2x(flag1)),6,1) = 1 then say 'got it' Lionel B. Dyck <>< Website: <https://www.lbdsoftware.com> https://www.lbdsoftware.com Github: <https://github.com/lbdyck> https://github.com/lbdyck "Worry more about your character than your reputation. Character is what you are, reputation merely what others think you are." - - - John Wooden -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: REXX Testing a bit?
I usually am displaying something depending on the bit setting, so I wrote a small proc: /** * BITSW function: to test a bit for a value and return translation * **/ BitSw: tr$ = Trace(o);; test_str = Arg(1); test_bit = Arg(2); test_ret = Arg(3); Return Translate(Substr(x2b(test_str),test_bit,1),test_ret,"01"); You could use it like this: mystring = BitSw(flag1,6,"NY") This means: Test the setting of bit 6 of the flag1 variable Translate to the values I pass in (N, Y) from the bit value of 0, 1 Another simple way you could do it is to build your test mask (bit 6 on), and use this: If C2X(Bitand(flag1,'0100'b)) > 0 Then say "got it" Thank you and best regards, Billy Ashton -- Original Message -- From "Lionel B. Dyck" To IBM-MAIN@listserv.ua.edu Date 8/2/2022 7:50:10 AM Subject REXX Testing a bit? What is the best way to test if a bit is 1 or 0? I'm doing this but was thinking there may/probably is a better way: If substr(x2b(c2x(flag1)),6,1) = 1 then say 'got it' Lionel B. Dyck <>< Website: <https://www.lbdsoftware.com> https://www.lbdsoftware.com Github: <https://github.com/lbdyck> https://github.com/lbdyck "Worry more about your character than your reputation. Character is what you are, reputation merely what others think you are." - - - John Wooden -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Using SORT to generate sequential Dates
Hi Kolusu, and thanks for your help. I have been out for a few days, and got to work with it today. It is just what I need, and is easy enough to change the volume of data to add another month (which I was going to try later). I appreciate all that you do, and for your expert knowledge! Thank you and best regards, Billy Ashton -- Original Message -- From "Sri h Kolusu" To IBM-MAIN@listserv.ua.edu Date 6/30/2022 6:14:04 PM Subject Re: Using SORT to generate sequential Dates Billy, If I understand your requirement correctly, you need current month begin to end and 1 or 2 months before the current month. So if you are run the job today(June 30th), it will generate the dates from April 1st to June 30th. If you run the job on July 1st then it would generate dates beginning May 1 thru May 31 , June 1 thru June 30 and July 1 thru July 31. If that is true, then use the following job which will give you the desired results. //*** //* Generate DFSORT symbols for begin date and repeat value * //* Begindate = Current month - 2 months (CCYYMM) 01 * //* Enddate= Last day of the current month (CCYYMMDD) * //* Repeatval = Number of entries (Enddate - Begmmdd) * //*** //STEP0100 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD * ABC //SORTOUT DD DSN=&,DISP=(,PASS),SPACE=(TRK,(1,0)) //SYSINDD * OPTION COPY,STOPAFT=1,NULLOUT=RC4 INREC OVERLAY=(01:DATE2-2,C'01', 11:DATE1, 21:11,08,Y4T,LASTDAYM,TOGREG=Y4T, 31:21,08,Y4T,DATEDIFF,01,08,Y4T) OUTFIL BUILD=(C'SDATE,C''',01,08,C,/, C'EDATE,C''',21,08,C,/, C'RPVAL,',31,08,UFF,ADD,+1,M11,LENGTH=8, 80:X) /* //*** //* Use the symbols from previous step and generate the data* //*** //STEP0200 EXEC PGM=SORT,COND=(0,LT) //SYSOUT DD SYSOUT=* //SYMNOUT DD SYSOUT=* //SYMNAMES DD DISP=(OLD,PASS),DSN=& //SORTIN DD * ABC //SORTOUT DD SYSOUT=* //SYSINDD * OPTION COPY,STOPAFT=1,NULLOUT=RC4 OUTFIL REPEAT=RPVAL, IFOUTLEN=80, IFTHEN=(WHEN=INIT, OVERLAY=(081:SDATE, 091:SEQNUM,3,ZD,START=0, 101:081,08,Y4T,ADDDAYS,091,3,ZD,TOGREG=Y4T)), IFTHEN=(WHEN=INIT, BUILD=(C'(''',C'D',SEQNUM,3,ZD,C''',', C,101,04,C'-',105,02,C'-',107,02,C''',', C,101,08,C''',', 101,08,C',', C,101,02,C''',', C,103,02,C''',', C,105,02,C''',', C,107,02,C''')')) /* Thanks, Sri Hari Kolusu DFSORT Development IBM Corporation -Original Message- From: IBM Mainframe Discussion List On Behalf Of Billy Ashton Sent: Thursday, June 30, 2022 2:30 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: [EXTERNAL] Re: Using SORT to generate sequential Dates Kolusu, the key data is that I have the previous month start and end date (for today, it would be May 1 and 31), with some range of dates before that. I also need at least the end of the current month (June 30, today). For running it tomorrow, I need at least June 1 - 30 (with some dates in May) and July 1 to 31. Having more dates than this is fine, and is no problem to go back even another month and ahead even another month. Billy Sri h Kolusu wrote: I need this for about 3 months worth of dates. . The dates should start either on the 15th of the month, 2 months ago, or 45 days ago (whichever is easier) Billy, It is easy to generate the dates in the required format, however a few clarifications needed. • Can the dates start from current date and go back to 3 months of dates? • Do you want the ability of passing ANY VALID date and number of entries needed? • 3 months dates can result in 88 - 93 entries depending on the current date. For example today's Current-date is 2022-06-30 and subtracting 3 months from it results in 2022-03-30. So we can have the start date from March 30th and get to Current date which will be 93 days of data. Is that OK? If we always use 93 as number of entries to generate then it might exceed the current date. I can handle it dynamically have the repeat value. Is that needed ? or is it ok to have 93 entries of data? Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu<mailto:lists...@listserv.ua.edu> with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu<mailto:lists...@listserv.ua.edu> wi
Re: Using SORT to generate sequential Dates
Kolusu, the key data is that I have the previous month start and end date (for today, it would be May 1 and 31), with some range of dates before that. I also need at least the end of the current month (June 30, today). For running it tomorrow, I need at least June 1 - 30 (with some dates in May) and July 1 to 31. Having more dates than this is fine, and is no problem to go back even another month and ahead even another month. Billy Sri h Kolusu wrote: I need this for about 3 months worth of dates. . The dates should start either on the 15th of the month, 2 months ago, or 45 days ago (whichever is easier) Billy, It is easy to generate the dates in the required format, however a few clarifications needed. • Can the dates start from current date and go back to 3 months of dates? • Do you want the ability of passing ANY VALID date and number of entries needed? • 3 months dates can result in 88 - 93 entries depending on the current date. For example today's Current-date is 2022-06-30 and subtracting 3 months from it results in 2022-03-30. So we can have the start date from March 30th and get to Current date which will be 93 days of data. Is that OK? If we always use 93 as number of entries to generate then it might exceed the current date. I can handle it dynamically have the repeat value. Is that needed ? or is it ok to have 93 entries of data? Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Using SORT to generate sequential Dates
Hello all! I have a new SORT challenge... I have looked up and found out how to use SORT to get the current date and output it, but I need to go further, and could not find this. I would like to use SORT to generate a file like this that I am using for testing some SQL logic I am working on: ('D001','ccyy-mm-dd','ccyymmdd',ccyymmdd,'cc','yy','mm','dd') I need this for about 3 months worth of dates. The dates should start either on the 15th of the month, 2 months ago, or 45 days ago (whichever is easier) and go up through the end of the current month (it could even start on the 1st day of 2 months ago if necessary). So for today (June 30), it would have ('D001','2022-04-15','20220415',20220415,'20','22','04','15') ('D002','2022-04-16','20220416',20220416,'20','22','04','16') . . . ('D077','2022-06-30','20220630',20220630,'20','22','06','30') I can generate the sequential number, but have trouble with incremental dates or getting the start date. Can Kolusu or someone else help with this? I am sure it is simple with a repeat, but I can't come up with anything. Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: FTP Software for Mainframe to PC
WinSCP(winscp.net) Thank you and best regards, Billy Ashton -- Original Message -- From "Lizette Koehler" To IBM-MAIN@listserv.ua.edu Date 6/10/2022 8:48:55 AM Subject FTP Software for Mainframe to PC Just looking to create a list of software that does FTP from the mainframe to the PC I know IND$FILE FILEZILLA Are there any others? Cost or no cost is okay. Lizette -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: [EXTERNAL] Do they still make greenbar paper these days?
I still remember my first computer-oriented job as a burster and decollator operator. My biggest nemesis was the 5-part carbon form with parts 4&5 edge glued (for an insurance company, of course). Ahh, those halcyon days... Thank you and best regards, Billy Ashton -- Original Message -- From "Clifford McNeill" To IBM-MAIN@listserv.ua.edu Date 6/8/2022 3:25:37 PM Subject Re: [EXTERNAL] Do they still make greenbar paper these days? Now you need a de-collator. On 6/8/2022 1:09 PM, Pommier, Rex wrote: GIYF or duck duck go or whatever your search engine of choice. Not only is greenbar paper still available (Staples, anyone?) but you can even still get it in carbon paper (shudder). -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Coding IF statement in BPXBATCH shell
Hey everyone...I am having a tough time with a shell script I am writing for my BPXBATCH step. All I want to do is run one of two commands depending on a variable that is passed to the script. I have tried coding if [ "$pet" == "DOG" ] ; then commands... else other commands fi and I have tried if [[ ]] if [ ... = ... ] all with the same result: + DOG == DOG DOG: /tmp/bpxshel.sh 48: FSUM7351 not found or ..: (I think these are the two square brackets) or .: (this is the one square bracket) So, how in the world do I code an IF statement in this BPXBATCH script to do a simple string compare? Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: how to do Unix copy command with temp file
gil, I tried IEBGENER, but my test (copy to Unix using Gener, then copy back to MVS file using Gener, then compare) failed with anything other than text files (Ascii), but that might have been due to Path settings or Filedata settings (too many iterations ago to remember). The delete is not necessary, and I could do the overwrite--it just seemed cleaner to do it that way...I will review that again for simplicity. And the /tmp directory suggestion about another subdir is a good one-thanks! Finally !cp is not a negate...in sftp, the bang means to run a shell command within the sftp active environment. So here, !cp is running a shell Copy command to copy the MVS file to Unix (still trying to work that out with return code testing). Thank you and best regards, Billy Ashton -- Original Message -- From "Paul Gilmartin" <000433f07816-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 2/8/2022 1:19:19 PM Subject Re: how to do Unix copy command with temp file On Tue, 8 Feb 2022 17:50:15 +0000, Billy Ashton wrote: Hi gil, here is what we do: 1. Run an inhouse program that massages several files and creates one (possibly) large file (&Untersedfile). 2. Terse that large file (&Tersedfile) 3. Pre-emptively delete the Unix file (this is the new step) Is delete necessary? (Does sort require a new (pathopts=OEXCL) file? 4. PGM=SORT to copy that file to Unix (as /tmp/tempfile.txt (actually, a more meaningful name is used). Why SORT rather than IEBGENER? o I wouldn't expect Kolusu to suggest anything else. o A co-worker long ago told me that SYNCGENR outperforms IEBGENER. o Bur IEBGENER will copy attributes from SYSUT1 to SYSUT2. o I suggest a private subdirectory of /tmp, with a meaningful name. 5. Run sftp to transfer it to a remote server at another company. I thought I had referenced my #4 solution previously, but in any case, Kolusu gave me a SORT OPTION=COPY step that will create the Unix file I need. Sort wants the DCB info for both sides of the copy, which is not a problem as these attributes don't change. I am also considering adding a !cp command to my Sftp script instead of the separate step, but don't know how to test for success of that !cp command before doing the "put" command. I am still researching that, as I am not a very good shell programmer. What's "!cp"? I don't understand the "!" Ah! on further review, shell negation. Perhaps: if cp ... then sftp ... else echo "cp failed with status $?." >&2 fi Or: cp ... || { echo "cp failed with status $?." >&2 exit 1; } sftp ... -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: how to do Unix copy command with temp file
Hi gil, here is what we do: 1. Run an inhouse program that massages several files and creates one (possibly) large file (&). 2. Terse that large file (&) 3. Pre-emptively delete the Unix file (this is the new step) 4. PGM=SORT to copy that file to Unix (as /tmp/tempfile.txt (actually, a more meaningful name is used). 5. Run sftp to transfer it to a remote server at another company. I thought I had referenced my #4 solution previously, but in any case, Kolusu gave me a SORT OPTION=COPY step that will create the Unix file I need. Sort wants the DCB info for both sides of the copy, which is not a problem as these attributes don't change. I am also considering adding a !cp command to my Sftp script instead of the separate step, but don't know how to test for success of that !cp command before doing the "put" command. I am still researching that, as I am not a very good shell programmer. Thank you and best regards, Billy Ashton -- Original Message -- From "Paul Gilmartin" <000433f07816-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 2/8/2022 12:04:56 PM Subject Re: how to do Unix copy command with temp file On Tue, 8 Feb 2022 16:06:35 +, Billy Ashton wrote: gil, the reason I cannot write directly is that in one case, after creating my file, I run it through AMATERSE to shrink it, and AMATERSE cannout output to the Unix file. So in this case, I need to write to a temp file, then copy it to Unix where I can send it. Do you ever need both the TERSE instance and the sftp instance? If you need only one you can select whether to allocate a temp DSN or a UNIX file. If your data set is large it might be desirable to avoid creating a large UNIX file. Sftp just executes a monitor program at the remote site. Instead of sftp you might be able to: cp //temp.dsn /dev/fd/1 |ssh user@remotehost " set -x; cat >remote.file.txt" (Yo never said how you solved the original "cp" problem.) Are you allowed to use Dovetailed Co:Z? -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: how to do Unix copy command with temp file
OK, gil, that worked perfectly. I see the messages in my JESYSMSG output whether the file exists or not: IGD103I SMS UNIX FILE ALLOCATED TO DDNAME DELTEMP IEF142I SFTPTEST DELETE - STEP WAS EXECUTED - COND CODE IGD105I UNIX FILE WAS DELETED, DDNAME IS (DELTEMP ) FILENAME IS (/tmp/tempfile.txt) Thanks again for your great suggestion! B Thank you and best regards, Billy Ashton -- Original Message -- From "Paul Gilmartin" <000433f07816-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 2/8/2022 8:59:34 AM Subject Re: how to do Unix copy command with temp file On Tue, 8 Feb 2022 13:01:14 +0000, Billy Ashton wrote: Is there a simple command like IEFBR14 that will allow me to delete a USS path if it exists, or to just skip over it if not? Right now, if I run IEFBR14, and have a DD statement with a path like PATH='/tmp/tempfile.txt',PATHDISP=(DELETE,DELETE) and that file does not exist, I get a JCL error. I believe that if you code: PATH='/tmp/tempfile.txt',PATHDISP=(DELETE,DELETE),PATHOPTS=(OCREAT,ORDWR) You will not get the error. It may momentarily create the file, then delete it. Is that objectionable. Ideally, I should not need this, but want to ensure that this file is not there when I start my processing. What is your requirement in detail? If you code PATH='/tmp/tempfile.txt',PATHOPTS=(OCREAT,OTRUNC,ORDWR) it will overwrite the file if it exists. Is that satisfactory? -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: how to do Unix copy command with temp file
Hi Carmen, I am going to give gil's method a try first, as it is simple enough to keep inside a BR14, and failing that, I will go with the shell command. Thanks for the suggestion! Thank you and best regards, Billy Ashton -- Original Message -- From "Carmen Vitullo" To IBM-MAIN@listserv.ua.edu Date 2/8/2022 8:29:11 AM Subject Re: how to do Unix copy command with temp file On Tue, 8 Feb 2022 13:01:14 +0000, Billy Ashton wrote: Ok, here is a followup question from a problem I ran into... Is there a simple command like IEFBR14 that will allow me to delete a USS path if it exists, or to just skip over it if not? Right now, if I run IEFBR14, and have a DD statement with a path like PATH='/tmp/tempfile.txt',PATHDISP=(DELETE,DELETE) and that file does not exist, I get a JCL error. Ideally, I should not need this, but want to ensure that this file is not there when I start my processing. Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN use the bpxbatch program and parm='sh rm /tmp/tempfile.txt' or for MVS datasets that may or not exists you should use a DISP=(MOD,DELETE,DELETE) correct the parms for your use, but this should work Carmen -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: how to do Unix copy command with temp file
gil, this looks like it will work well for me here. I will give this a try - creating and deleting is no issue to me, as the end result is that whether or not the file exists beforehand, it will not exist afterwards, and the process will not fail on a file not found. Thanks for this! Thank you and best regards, Billy Ashton -- Original Message -- From "Paul Gilmartin" <000433f07816-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 2/8/2022 8:59:34 AM Subject Re: how to do Unix copy command with temp file On Tue, 8 Feb 2022 13:01:14 +0000, Billy Ashton wrote: Is there a simple command like IEFBR14 that will allow me to delete a USS path if it exists, or to just skip over it if not? Right now, if I run IEFBR14, and have a DD statement with a path like PATH='/tmp/tempfile.txt',PATHDISP=(DELETE,DELETE) and that file does not exist, I get a JCL error. I believe that if you code: PATH='/tmp/tempfile.txt',PATHDISP=(DELETE,DELETE),PATHOPTS=(OCREAT,ORDWR) You will not get the error. It may momentarily create the file, then delete it. Is that objectionable. Ideally, I should not need this, but want to ensure that this file is not there when I start my processing. What is your requirement in detail? If you code PATH='/tmp/tempfile.txt',PATHOPTS=(OCREAT,OTRUNC,ORDWR) it will overwrite the file if it exists. Is that satisfactory? -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: how to do Unix copy command with temp file
gil, the reason I cannot write directly is that in one case, after creating my file, I run it through AMATERSE to shrink it, and AMATERSE cannout output to the Unix file. So in this case, I need to write to a temp file, then copy it to Unix where I can send it. Thank you and best regards, Billy Ashton -- Original Message -- From "Paul Gilmartin" <000433f07816-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 2/8/2022 9:11:38 AM Subject Re: how to do Unix copy command with temp file On Tue, 8 Feb 2022 13:01:14 +0000, Billy Ashton wrote: ... Ideally, I should not need this, but want to ensure that this file is not there when I start my processing. You wrote earlier that you wrote first to a Classic temp data set, then copy that to a temp UNIX file. Why can you not write directly to the UNIX file? Can you show your code, at least the part that allocates the temp data set? -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: how to do Unix copy command with temp file
Ok, here is a followup question from a problem I ran into... Is there a simple command like IEFBR14 that will allow me to delete a USS path if it exists, or to just skip over it if not? Right now, if I run IEFBR14, and have a DD statement with a path like PATH='/tmp/tempfile.txt',PATHDISP=(DELETE,DELETE) and that file does not exist, I get a JCL error. Ideally, I should not need this, but want to ensure that this file is not there when I start my processing. Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
how to do Unix copy command with temp file
Here is a simple question that has a simple answer - I hope! I have a process that takes input from several standard MVS files, and creates a temporary file (sometimes small, sometimes ginormous). Our shop is using SFTP to send files to another server, and I am not sure how to code the "cp" command to put this temp file into an HFS directory so I can send it. I can work with standard, catalogued files without a problem, but was hoping i could use a temp file here. What do y'all think? Can I do a cp command with a temp file, or do I need to have a catalogued file? Thank you and best regards, Billy Ashton -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: What not to do on a z/OS system...
My career in IT started as an overnight burster and decollator operator... Billy -- Original Message -- From "Carmen Vitullo" To IBM-MAIN@listserv.ua.edu Date 1/19/2022 3:07:12 PM Subject Re: What not to do on a z/OS system... yup, Print, burst, trim, console, microfiche, all shifts :) we did it all indeed Carmen On 1/19/2022 2:04 PM, Mitch Mccluhan wrote: Carmen? Print operator? Back in the 70s, we did it all! Mitch -Original Message- From: Carmen Vitullo To:IBM-MAIN@LISTSERV.UA.EDU Sent: Wed, Jan 19, 2022 1:50 pm Subject: Re: What not to do on a z/OS system... NO - fun was being a print operator and throwing an empty box of stock paper at someone who thought it was a full box what not to do when you're an operator working with Datagraphix microfiche, save the chemical change for the next shift, it always comes back to bite you Carmen On 1/19/2022 1:44 PM, Mitch Mccluhan wrote: ...the most fun was when you had a punch card system where a co-worker was sorting a few columns of approximately 25K cards and asked you to help carry a stack. When they weren't looking, you pick up a stack of garbage cards instead, take a few steps and "accidentally" drop the stack. So much fun! Of course, this was before true operating systems. Mitch McCluhan -Original Message- From: Seymour J Metz To:IBM-MAIN@LISTSERV.UA.EDU Sent: Wed, Jan 19, 2022 1:39 pm Subject: Re: What not to do on a z/OS system... I've heard of operators cancelling jobs that were running correctly because they assumed that tapes moving back and forth always meant a bad spot. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of Carmen Vitullo [cvitu...@hughes.net] Sent: Wednesday, January 19, 2022 1:27 PM To:IBM-MAIN@LISTSERV.UA.EDU Subject: Re: What not to do on a z/OS system... not a zseries, around the same decade, in the 80's we had a 30xx processor that went into a wait state IIRC, I was an operator and we were rerunning an inventory update process for a large retailer, I started to hit stop/unload all the inventory files that were mounted on the drives, supervisor and sysprogs were at the console and I got heat for doing it since then an O2 SYSTEM RESTART (I think) was new and my boss throught we could just restart the processor and pick up like the system never went into a wait state, luckily for me, the system did not recover and an IPL was required. other things like attempting to run a compile/go my first assembler program (as an operator) the system seemingly hung, it was not me thankfully but I still had a pucker up moment. I recall my lead operator doing something similar on a data check on a tape, you know when you see the tape re-read the same block over and over, he hit stop on the processor, it was a 370/158, then accessed the control unit for the drives and threw some toggles to bypass the bad block on the tape, resumed and all was good, our applications were written i a way that bad data was written to an error report so we could balance the data and account for the missing input - Carmen On 1/19/2022 12:04 PM, Lennie Dymoke-Bradshaw wrote: At my first job (1975) one of the programmers was chatting to the operators and then lent against that red button on the wall. Shutdown the entire machine room of course. Lennie -Original Message- From: IBM Mainframe Discussion ListOn Behalf Of Mike Shaw Sent: 19 January 2022 16:44 To:IBM-MAIN@LISTSERV.UA.EDU Subject: Re: What not to do on a z/OS system... We once had a data check we could not get past on a 3420 tape. This was around 1980, MVS/SE 1 or thereabouts. The lead sysprog hit stop on the tape drive, pulled the leading tape portion out of the vacuum column, rubbed it gently back and forth between his finger and thumb, and slowly released the tape back into the vacuum column. He hit start on the tape drive and we got past the data check and read the rest of the data on that tape without a problem. No blocks were missed. I thought that was magic at the time... Mike Shaw MVS/QuickRef Support Group Chicago-Soft, Ltd. On Wed, Jan 19, 2022 at 10:31 AM Seymour J Metzwrote: Back in the old days the R/W heads lifted up when you unloaded a tape and moved down when you mounted a new reel. One day an interlock didn't interlock and the R/W head mashed the hand of an operator. The damage wasn't permanent, but everybody was more cautious after that. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of Cameron Conacher [03cfc59146bb-dmarc-requ...@listserv.ua.edu] Sent: Wednesday, January 19, 2022 10:22 AM To:IBM-MAIN@LISTSERV.UA.EDU Subject: Re: What not to do on a z/OS system... A very long time ago, (mid seventies I think) I was loading a tape
Re: Ad message paradigm (Re: Ad NetRexx (Re: Ad programming features (Re: ... Re: Top 8 Reasons for using Python instead of REXX for z/OS
All of this sounds interesting, so if I wanted to try out some Python scripts to see how they stack up to Rexx, where might I find some Python source members along with JCL members to run them? Thanks! Billy -- Original Message -- From "Farley, Peter x23353" <031df298a9da-dmarc-requ...@listserv.ua.edu> To IBM-MAIN@listserv.ua.edu Date 1/13/2022 10:49:48 AM Subject Re: Ad message paradigm (Re: Ad NetRexx (Re: Ad programming features (Re: ... Re: Top 8 Reasons for using Python instead of REXX for z/OS It is my understanding that Java is and has been available in z/OS for a long time now, but not from TSO or CLIST directly. From REXX via SYSCALL and BPXWUNIX I suspect it is possible, but not from, e.g., the TSO / ISPF command line directly -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: How to use dfsort to filter keywords that aren't fixed position
Thanks, Kolusu...this works like a charm, and I can understand what it is doing. I will let you get back on track with Jason's part of the request now. Have a Merry Christmas and happy holiday season! Billy Sri h Kolusu wrote on 12/21/2021 15:38: 1. Look for any job ABCDE123 having message IEC988I, and note the JOBID. 2. If you find that message, display all the messages for Job ABCDE123 with that same JOBID. I would also assume I could change the search for the jobname to use a shorter version, like 4,CH,C'ABCD' to give me all of these jobs. Billy, Here is the job that will give you the desired results. Look at the OUTFIL INCLUDE statement which lets you filter on the jobnames. The job name is available at position 152 for 8 bytes. //STEP0100 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //INA DD DISP=SHR,DSN=Your.Input.FBM.133.LRECL.SYSLOG //INB DD DISP=SHR,DSN=Same.Input.FBM.133.LRECL.SYSLOG //SORTOUT DD SYSOUT=* //SYSINDD * OPTION COPY JOINKEYS F1=INA,FIELDS=(134,8,A) JOINKEYS F2=INB,FIELDS=(039,8,A) REFORMAT FIELDS=(F1:1,150) INREC IFTHEN=(WHEN=GROUP, BEGIN=(143,01,CH,GT,C' '), PUSH=(143:134,08, $ JOBID 152:143,08))$ JOBNAME OUTFIL BUILD=(1,133), INCLUDE=((134,8,CH,EQ,143,08,CH),AND, 152,4,CH,EQ,C'ABCD') /* //JNF1CNTL DD * INREC IFTHEN=(WHEN=GROUP, BEGIN=(21,5,CH,GT,C' '), PUSH=(134:39,08)),$ JOBID IFTHEN=(WHEN=(58,8,CH,EQ,C'$HASP373'), OVERLAY=(143:67,08)) $ JOBNAME /* //JNF2CNTL DD * INCLUDE COND=(58,8,CH,EQ,C'IEC988I') /* My brain is not working well today due to the flu, and I am struggling a bit. Hope you feel better. Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: How to use dfsort to filter keywords that aren't fixed position
Kolusu, thanks for the sample, it does work great for what you said, and I can use this. I'm afraid I did not ask this correctly, and it will explain why I think two steps, unless you think otherwise. Let me restate the logic using your sample below. 1. Look for any job ABCDE123 having message IEC988I, and note the JOBID. 2. If you find that message, display all the messages for Job ABCDE123 with that same JOBID. I would also assume I could change the search for the jobname to use a shorter version, like 4,CH,C'ABCD' to give me all of these jobs. But I will let you see what you think. My brain is not working well today due to the flu, and I am struggling a bit. Thanks, Billy Sri h Kolusu wrote on 12/21/2021 13:54: I would like to ask one extension to this, if you please. I would like to be able to further screen the syslog by Jobname, but knowing that there could be multiple job numbers, I would need a way to capture those, too. Billy, It is quite simple. The $HASP373 message contains the jobname and job number which can be written to the output file quite easily. So in using this example, I would want to see HASM* messages, but only if they were in any job ABCDE123. If so, it would be great to see all the ABCDE123 messages, but I suspect that this is now a two-step job of some kind. It can be done using JOINKEYS. in a single step. Here is a sample job that extracts a particular job which issued the message IEC988I //STEP0100 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //INA DD DISP=SHR,DSN=Your.Input.FBM.133.LRECL.SYSLOG //INB DD DISP=SHR,DSN=Same.Input.FBM.133.LRECL.SYSLOG //SORTOUT DD SYSOUT=* //SYSINDD * OPTION COPY JOINKEYS F1=INA,FIELDS=(39,8,A)$ Jobid JOINKEYS F2=INB,FIELDS=(39,8,A)$ Jobid REFORMAT FIELDS=(F1:1,141) INCLUDE COND=(134,8,CH,EQ,C'ABCDE123') INREC BUILD=(1,133) /* //JNF1CNTL DD * INCLUDE COND=(58,8,CH,EQ,C'IEC988I') INREC PARSE=(%01=(ABSPOS=66,ENDBEFR=C',',FIXLEN=8)), OVERLAY=(134:%01) /* //JNF2CNTL DD * INCLUDE COND=(58,8,CH,EQ,C'$HASP373') /* if you need further help, please send me a sample input file and rules to extract the data, and I will come up with a solution. Thanks, Kolusu -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: How to use dfsort to filter keywords that aren't fixed position
Kolusu, this leads to some intriguing things, and there are a lot of possibilities here. I would like to ask one extension to this, if you please. I would like to be able to further screen the syslog by Jobname, but knowing that there could be multiple job numbers, I would need a way to capture those, too. So in using this example, I would want to see HASM* messages, but only if they were in any job ABCDE123. If so, it would be great to see all the ABCDE123 messages, but I suspect that this is now a two-step job of some kind. What do you think? Is something like this remotely possible here? Billy Sri h Kolusu wrote on 12/20/2021 11:22: If we put them together, the output isn't what we need. Jason, It is quite easy to get the multi-line messages. Looks like you are interested in extracting messages which begins with HSAM... Basically a multi-line message will NOT have the date and time for the continuation lines. And the message id are at fixed position on the first line (position 58) Assuming your syslog is FBM and LRECL=133 here is a job that would extract the HSAM.. messages (single and multi-line) //STEP0100 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD DISP=SHR,DSN=Your Input Syslog/Operlog //SORTOUT DD SYSOUT=* //SYSINDD * OPTION COPY INREC IFTHEN=(WHEN=GROUP, BEGIN=(21,5,CH,GT,C' '), $ IF DATE IS > ' ' PUSH=(134:58,08)) $ MESSAGE ID OUTFIL BUILD=(01,133), $ ORIGINAL LRECL INCLUDE=(134,4,CH,EQ,C'HSAM') $ ONLY HSAM MESSAGES /* Thanks, Kolusu DFSORT Development IBM Corporation -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Using HTTPS from JCL for file download?
Carmen, I'd be thrilled to see your samples, as I can't get to my ShopZ person here at the moment. Please make sure to strip your user/password stuff, so I don't get you in trouble! Billy Carmen Vitullo wrote on 11/19/2021 15:13: I use HTTPS from batch JCL, it works very well . IBM provides this option on shopz once your order is placed. my company requires us to go thru the proxy server so I have to provide my LAN ID and Password to pass thru the proxy I can provide some sample JCL but that JCL is the same as what IBM provides on Shopz, your site requirements I'm sure are different, I've been as site that do not require me to use the proxy , both options work well. Carmen On 11/19/2021 2:00 PM, Billy Ashton wrote: Hi all, I am back! After successfully getting my FTPS and SFTP JCL set up and working right here, some manager got a bee in his bonnet to say that he wanted to use HTTPS protocol from his JCL, because he read that HTTPS was the best way to go. I tried to explain that HTTPS was meant for browser applications, and that some special application would be needed to process the HTTPS headers and data, but he insisted I try to find a way to make HTTPS work from JCL. So...can this be done? Can a batch JCL job run HTTPS to do file downloads? If so, can you help a brother out and let me see how you do it, so I can see if we can do it here? I appreciate this group - if it can be known, someone here will know it! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Using HTTPS from JCL for file download?
Hi all, I am back! After successfully getting my FTPS and SFTP JCL set up and working right here, some manager got a bee in his bonnet to say that he wanted to use HTTPS protocol from his JCL, because he read that HTTPS was the best way to go. I tried to explain that HTTPS was meant for browser applications, and that some special application would be needed to process the HTTPS headers and data, but he insisted I try to find a way to make HTTPS work from JCL. So...can this be done? Can a batch JCL job run HTTPS to do file downloads? If so, can you help a brother out and let me see how you do it, so I can see if we can do it here? I appreciate this group - if it can be known, someone here will know it! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: conditional JCL - Reinvent the wheel?
Here is a neat little trick I learned from a guy at CA, using SET and IF. I use this a lot now, and other than needing a dummy step if I am testing the first step in a job, it works great. I have been able to nest my IF statements sometimes 3 deep when I have complex processing that I want to switch on or off. Billy //* //* Run the TEST1 process? Set to 1 if yes, 0 if no: // SET RUNTEST1=0 //* //FIRSTSTP EXEC PGM=IEFBR14 Dummy first step for IF tests //* //I@TEST1 IF =1 THEN "IF" cannot be used before 1st step //TEST1PGM EXEC PGM=IEFBR14 //* //L@TEST1 ELSE //TEST1OTH EXEC PGM=IEFBR14 //* //E@TEST1 ENDIF // -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: How to stack large instream data inside BPXBATCH
Gil, there are some really good suggestions here, and I will see about how I can do them. I think I will have to go the multiple member route, but I will use OCOPY instead of REPRO, and look to STDENV for the variables. I think someone tried to get COZBATCH a while ago, and that was vetoed by management, so that is not an option. As to the actual download, sftp cannot download directly to MVS files (or upload from, for that matter). It has to work with a Unix file that is then Copied to/from the MVS file. Thanks for all the help with this and for teaching me more once again! Billy Paul Gilmartin wrote on 10/19/2021 09:09: On Tue, 19 Oct 2021 02:57:22 -0500, Jantje. wrote: On Mon, 18 Oct 2021 15:17:22 -0400, Billy Ashton wrote: Hi again...is there a way to run a single BPXBATCH JCL member that Can I suggest you move to COZBATCH? So much simpler to use and far better functionality IMHO. A good idea provided that the programmer is entitled to haven COZBATCH installed. On Mon, 18 Oct 2021 15:17:22 -0400, Billy Ashton wrote: Hi again...is there a way to run a single BPXBATCH JCL member that copies some instream data into temp files and then run a command that uses those files? For example, I tried this, but got no output: //SFTP EXEC PGM=BPXBATCH ... //STDPARM DD *,SYMBOLS=(JCLONLY) sh cat > /pwd.sh << EOF1 Your STDPARM should begin with SH or PGM. echo '' EOF1 Trailing blanks will caus EOFn not to bee recognized. Perhaps better IKJEFT01 with several REPRO commands to create the temp files. Create all the temp files in a single temp directory. delete it with "rm -r" allowing design flexibility. I'll suggest putting sensitive variables in STDENV, avoiding even momentary existence in the temp file. sh cd "sh" causes the "cd" to be performed in a separate execution environment, having no practical effect. # -- 3. Download the file from the server get # -- 4. Copy the file from the unix HFS to z/OS !cp "//'$'" Can't FTP download directly to an MVS data set or even a DDNAME, requiring no temp file or copy/ Also, before you ask, because of the highly sensitive nature of this server, the passwords are changed at a very high frequency, and they elected to use user/password authentication as keys do not allow the time-restricted access they need. Can't keys be changed as frequently as passwords? -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email tolists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
How to stack large instream data inside BPXBATCH
Hi again...is there a way to run a single BPXBATCH JCL member that copies some instream data into temp files and then run a command that uses those files? For example, I tried this, but got no output: //SFTP EXEC PGM=BPXBATCH //STDOUT DD SYSOUT=* //STDERR DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYMBOLS DD SYSOUT=* //STDPARM DD *,SYMBOLS=(JCLONLY) sh cat > /pwd.sh << EOF1 echo '' EOF1 sh cat > /sftp1.sh << EOF2 export DISPLAY=FOO export SSH_ASKPASS=/pwd.sh #--- Now run the sftp command sftp -vv -F /tmp/ssh.cfg -b /tmp/sf.cmd $1@$2 EOF2 sh cat > /sf.cmd << EOF3 # -- 1. Change to the directory for dept upload files cd Dept_files_XX # -- 2. Type of file transfer - ascii or binary # -- 3. Download the file from the server get # -- 4. Copy the file from the unix HFS to z/OS !cp "//'$'" # -- 5. Remove the intermediate work files from unix HFS !rm !rm pwd.sh !rm sf.cmd !rm sftp1.sh EOF3 sh cat > /ssh.cfg << EOF4 Host my.company.sensitive.downloads Port 22 User @my.company.sensitive.downloads BatchMode no StrictHostKeyChecking no PasswordAuthentication yes PubkeyAuthentication no IdentityFile /dev/null EOF4 sh cd sh /tmp/sftp1.sh /* I read somewhere that every command in STDPARM needs a semi-colon at the end, and wonder if that is my problem--where would I put the s-colon on these redirected input commands? Or is there a better way to handle all these lines instream? I would like to keep it simple and in one JCL step, as the user base is not very JCL fluent. Here, JCL DD * cannot be used in BPXBATCH, as far as I can tell. Also, before you ask, because of the highly sensitive nature of this server, the passwords are changed at a very high frequency, and they elected to use user/password authentication as keys do not allow the time-restricted access they need. Thanks for your advice! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Passing user/pw in to BPXBATCH SFTP
Well, when you are working in JCL, the line is 72/80 bytes for most libraries. So then the question is, how do you continue the command to a second or third line in these standard JCL libraries? Billy What Line limit are you dealing with? 72 or larger? With BPXBATCH STDPARM, the limit is not 72, nor 100, but 32767. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Passing user/pw in to BPXBATCH SFTP
Hi all! I see we have been talking some about FTPS, so now I want to spin the letters around for SFTP with an easy question-I hope! Does anyone have a batch job/JCL that they use for SFTP that hides a user/password? I have looked for some hours at Google, and everything I see has the user and password in clear text. I am looking for something like the NETRC file, or some other method you folks use for running SFTP in BPXBATCH. Also, I could be running up against the line limit for a single line SFTP command with my different options (I am specifying particular ciphers), and wonder if there is a way to make SFTP a multi-line command. Thanks for all your help! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Spool entire job to a file?
Sure...I will try to copy it out tomorrow for you... kekronbekron wrote on 8/18/2021 23:15: If you don't mind, can you show us how. - KB ‐‐‐ Original Message ‐‐‐ On Thursday, August 19th, 2021 at 5:33 AM, Billy Ashton wrote: I found a way to call the Sysview batch processing program from my JCL, and I can save the whole job as I wanted. Thanks to everyone for your suggestions--I really like the way this group thinks out of the box! Billy Billy Ashton wrote on 8/18/2021 13:56: Thanks, Lizette! I will give this a try. Billy Lizette Koehler wrote: Go to the internet and look for John McKown's JES2DISK in a GIT Hub It will do what you want and it is free Lizette -Original Message- From: IBM Mainframe Discussion List IBM-MAIN@LISTSERV.UA.EDU On Behalf Of Billy Ashton Sent: Wednesday, August 18, 2021 6:47 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Spool entire job to a file? Hi all...I have a need to run a bunch of jobs to do some changes to files, and we want to preserve the output of all these jobs for auditors. Is there a way to use an OUTPUT statement or something in the job itself that can redirect the entire job output to a PDS member? We don't have a Spooler utility on this LPAR, so I am trying to find an easy way to capture these jobs. TIA! Billy For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Spool entire job to a file?
I found a way to call the Sysview batch processing program from my JCL, and I can save the whole job as I wanted. Thanks to everyone for your suggestions--I really like the way this group thinks out of the box! Billy Billy Ashton wrote on 8/18/2021 13:56: Thanks, Lizette! I will give this a try. Billy Lizette Koehler wrote: Go to the internet and look for John McKown's JES2DISK in a GIT Hub It will do what you want and it is free Lizette -Original Message- From: IBM Mainframe Discussion List On Behalf Of Billy Ashton Sent: Wednesday, August 18, 2021 6:47 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Spool entire job to a file? Hi all...I have a need to run a bunch of jobs to do some changes to files, and we want to preserve the output of all these jobs for auditors. Is there a way to use an OUTPUT statement or something in the job itself that can redirect the entire job output to a PDS member? We don't have a Spooler utility on this LPAR, so I am trying to find an easy way to capture these jobs. TIA! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Spool entire job to a file?
Thanks, Lizette! I will give this a try. Billy Lizette Koehler wrote: Go to the internet and look for John McKown's JES2DISK in a GIT Hub It will do what you want and it is free Lizette -Original Message- From: IBM Mainframe Discussion List On Behalf Of Billy Ashton Sent: Wednesday, August 18, 2021 6:47 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Spool entire job to a file? Hi all...I have a need to run a bunch of jobs to do some changes to files, and we want to preserve the output of all these jobs for auditors. Is there a way to use an OUTPUT statement or something in the job itself that can redirect the entire job output to a PDS member? We don't have a Spooler utility on this LPAR, so I am trying to find an easy way to capture these jobs. TIA! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Spool entire job to a file?
Actually, we have the CA product Sysview. I am looking to see if there is an easy way to do this in there. James Crudele wrote: No SDSF? On Aug 18, 2021, at 09:56, Mike Shorkend wrote: Spool Offload? -Original Message- From: IBM Mainframe Discussion List On Behalf Of Billy Ashton Sent: Wednesday, 18 August 2021 16:47 To: IBM-MAIN@LISTSERV.UA.EDU Subject: Spool entire job to a file? Hi all...I have a need to run a bunch of jobs to do some changes to files, and we want to preserve the output of all these jobs for auditors. Is there a way to use an OUTPUT statement or something in the job itself that can redirect the entire job output to a PDS member? We don't have a Spooler utility on this LPAR, so I am trying to find an easy way to capture these jobs. TIA! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Spool entire job to a file?
Hi all...I have a need to run a bunch of jobs to do some changes to files, and we want to preserve the output of all these jobs for auditors. Is there a way to use an OUTPUT statement or something in the job itself that can redirect the entire job output to a PDS member? We don't have a Spooler utility on this LPAR, so I am trying to find an easy way to capture these jobs. TIA! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Identifying PDS/E or PDS in IEBCOPY Unload
Steve, this is from the IEBCOPY doc: A load module from an unload data set cannot be reloaded into a PDSE as a program object. The load modules should be reloaded into a partitioned data set and then the partitioned data set should be copied to a PDSE to convert the unloaded load module into a program object. This means if a loadlib PDS is unloaded by IEBCOPY, it cannot be loaded directly back into a PDSE as executable modules. I haven't found the doc on it, but it is my understanding that a PDS cannot contain program objects, so if a PDSE is unloaded by IEBCOPY, it cannot be loaded directly back into a PDS. Or am I misreading something here? Don't forget that I am working only with the unloaded file sent to me via FTP, and I do not have the original PDS or PDSE available to me to do things like a 3.3 copy. B Steve Smith wrote on 7/29/2021 18:31: Where did you get that notion? IEBCOPY can indeed load into a dataset of a different type than the source. Only exception I know of is from a PDSE with long aliases. I'd think your "backup plan" (albeit my first plan), would be to unload the file into a PDSE and not worry about it until something goes wrong. sas On Thu, Jul 29, 2021 at 6:07 PM Billy Ashton wrote: These are solution files that the vendor sends to us, so we have no control of what to do. They tell us that the target is a PDS or PDSE, but I was just looking for a backup method to try and ensure that what they say matches the file. As I'm sure you know, if they unloaded a PDS file with load modules, you can't take the unloaded file and then try to load it into a PDSE. Likewise, if a PDSE with program objects was unloaded, you can't load it into a standard PDS. Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Identifying PDS/E or PDS in IEBCOPY Unload
These are solution files that the vendor sends to us, so we have no control of what to do. They tell us that the target is a PDS or PDSE, but I was just looking for a backup method to try and ensure that what they say matches the file. As I'm sure you know, if they unloaded a PDS file with load modules, you can't take the unloaded file and then try to load it into a PDSE. Likewise, if a PDSE with program objects was unloaded, you can't load it into a standard PDS. Billy John Abell wrote on 7/29/2021 15:47: Why not have them use TSO XMIT files like we do? John T. Abell Tel:800-295-7608Option 4 President International: 1-416-593-5578 Option 4 E-mail: john.ab...@intnlsoftwareproducts.com Fax:800-295-7609 International: 1-416-593-5579 International Software Products www.ispinfo.com This email may contain confidential and privileged material for the sole use of the intended recipient(s). Any review, use, retention, distribution or disclosure by others is strictly prohibited. If you are not the intended recipient (or authorized to receive on behalf of the named recipient), please contact the sender by reply email and delete all copies of this message. Also,email is susceptible to data corruption, interception, tampering, unauthorized amendment and viruses. We only send and receive emails on the basis that we are not liable for any such corruption, interception, tampering, amendment or viruses or any consequence thereof. -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Billy Ashton Sent: Thursday, July 29, 2021 2:37 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Identifying PDS/E or PDS in IEBCOPY Unload Hey everyone, here is an odd question for y'all. Is there any way I can tell from an IEBCOPY unload file (that I received from a vendor) whether it is an unload of a PDS or an unload of a PDS/E? Since IEBCOPY is pretty particular about only loading full libraries back to the same source type, I was hoping I could look at byte 42 or something like that to know that I need to load this to a PDS/E. Anybody have any hope for me here? (I know I can ask the vendor, but I wanted to confirm programmatically if possible). Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Identifying PDS/E or PDS in IEBCOPY Unload
Hey everyone, here is an odd question for y'all. Is there any way I can tell from an IEBCOPY unload file (that I received from a vendor) whether it is an unload of a PDS or an unload of a PDS/E? Since IEBCOPY is pretty particular about only loading full libraries back to the same source type, I was hoping I could look at byte 42 or something like that to know that I need to load this to a PDS/E. Anybody have any hope for me here? (I know I can ask the vendor, but I wanted to confirm programmatically if possible). Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Interesting behavior - instream variable sub
Try adding an output report DD statement to your SYSIN, like this: //SYSUT1 DD *,SYMBOLS=(EXECSYS,SYMRPT) And then add a DD for SYMRPT //SYMRPT DD SYSOUT=G This report will show the before and after substitution, and may give you a clue. Billy Ed Jaffe wrote on 7/20/2021 18:30: On 7/20/2021 2:26 PM, Lund, James E wrote: Howdy, Seeing an interesting behavior with instream variable substitution. My 10 step test job: It works great with JES3^plus V1R0 under z/OS 2.4: FY=2021 SYS=MVS70 FY=2021 SYS=MVS70 FY=2021 SYS=MVS70 FY=2021 SYS=MVS70 FY=2021 SYS=MVS70 FY=2021 SYS=MVS70 FY=2021 SYS=MVS70 FY=2021 SYS=MVS70 FY=2021 SYS=MVS70 FY=2021 SYS=MVS70 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Allocate DB2 LDS with JCL?
Kolusu, thanks once again! I will give this a try. I assume the Blksize of 4K will set the CISize to 4K... And do I need to do anything special with ShareOpts? -- Original Message -- From: "Sri h Kolusu" To: IBM-MAIN@listserv.ua.edu Sent: 6/17/2021 11:59:13 AM Subject: Re: Allocate DB2 LDS with JCL? if anyone has samples to allocate a DB2 VSAM LDS (1) using JCL parameters Billy, JCL supports the parm RECORG and you can define the LDS as follows //STEP0100 EXEC PGM=IEFBR14 //LDSCRE DD DSN=, //DISP=(NEW,CATLG,DELETE), //SPACE=(CYL,(60,20)), //RECORG=LS, //BLKSIZE=4096 Thanks, Kolusu -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Allocate DB2 LDS with JCL?
Hey everyone, here is a quick question. I am looking at some of our utilities and production control tools, and wanted to know if anyone has samples to allocate a DB2 VSAM LDS (1) using JCL parameters only - not with IDCAMS, or (2) with Rexx? If so, I would appreciate it - I have not found anything in manuals for these. Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: ISPF startup processing
That is correct. We tried the standard PDF and ISPF, and they only produced the single session with the primary option menu. Only ISPSTART caused the trouble. I haven't looked in the doc to see if there is some sort of cozy relationship between ISPSTART and the ZSTART profile variable, but it appears so. Billy -- Original Message -- From: "Seymour J Metz" To: IBM-MAIN@listserv.ua.edu Sent: 6/9/2021 4:18:18 PM Subject: Re: ISPF startup processing PDF and ISPF won't give you the same defaults as ISPSTART, so it definitely matters whether the OP types ISPSTART or an alias of ISRPCP. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of Itschak Mugzach [0305158ad67d-dmarc-requ...@listserv.ua.edu] Sent: Wednesday, June 9, 2021 3:11 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: ISPF startup processing Does this happen with all ispf aliases (PFG ISPF, etc.)? What happens if he starts ispf with a different APPL name (aka NEWAPPL(xxx))? ITschak *| **Itschak Mugzach | Director | SecuriTeam Software **|** IronSphere Platform* *|* *Information Security Continuous Monitoring for Z/OS, zLinux and IBM I **| * *|* *Email**: i_mugz...@securiteam.co.il **|* *Mob**: +972 522 986404 **|* *Skype**: ItschakMugzach **|* *Web**: http://secure-web.cisco.com/1WThYloW64MqwoxLvZJ2QLiXMP5IPg_g9Ll3M9Xie765QeY9Ql98YJngmux8G3eg1MLOrSQUj7H3Kit0kdW0Mfuked_H38nU5lsVoNdx-AcU8Fpz6tOJKx3vuRczBcRRBXqMPm4Om_W_zo59P75IkEFeUmNwFLjvdc-h_njqUVa1P2XVtOvjwmt_Rgknv74REuAxRbKZkPKMOcav3ZRhy0nTH_gpF048i3-Ls_BUZs_1RqTUTevUcnv0hhHWqsykQ9As7HkoR_THB_x6pYu_PcuhNNskh8bTJxu9NHB8uEQC6u8IiEBnFC2zy-xQE4740Yqz6CXzXXOwWGgAqbNzgyTfbM8X6kZVUxa37jqy1knXhoqpBAXPCFTPAUGZJSdW8v9v1Zmtru3xtGgB3J4i5HNdVfF5FRYalhKU_vU41QU0jP5AMKRl0Q92crOjRHTc8/http%3A%2F%2Fwww.Securiteam.co.il **|* On Wed, Jun 9, 2021 at 9:59 PM Seymour J Metz wrote: ISRPCP calls ISPSTART under the covers; they are both commands and are either in the LPA or the link list. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of Billy Ashton [bill00ash...@gmail.com] Sent: Wednesday, June 9, 2021 11:13 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: ISPF startup processing The TSO logon script dumps the user to a READY prompt. Then the user selects either a specific application command for special processing or ISPSTART to get into ISPF. I don't see a special ISPSTART Clist/Rexx program in his Sysproc or Sysexec, so there must be something happening with ISPSTART. Billy -- Original Message -- From: "Carmen Vitullo" To: IBM-MAIN@listserv.ua.edu Sent: 6/9/2021 11:06:01 AM Subject: Re: ISPF startup processing >Maybe the session manager - startup logon script? > >I recall when I started at my current job the systems folks that manage TPX thought it was a great idea to start a script that puts your session in split screen, one screen SDSF, one ISPF edit > > >Carmen > > >On 6/9/2021 9:58 AM, Billy Ashton wrote: >>Hello all...I don't know if there is an ISPF list, but hope you can help me here. >> >>I have a user that is having some strange things happening when he logs into TSO and goes into ISPF. For example, while everyone else starts ISPF and has one window open, this user has 5 split screens defined and named, but he has no idea how. >> >>Can someone tell me if there is a way to trace all the commands that get processed when he enters ISPSTART, or is there some magic way to have commands like multiple split screens issued automatically? >> >>Thank you for your kind thoughts! >> >>Billy >> >> >>-- >>For IBM-MAIN subscribe / signoff / archive access instructions, >>send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN >> >-- *Carmen Vitullo* > >/“I am not bound to win, but I am bound to be true. I am not bound to succeed, but I am bound to live up to what light I have.” ― Abraham Lincoln/ > > >-- >For IBM-MAIN subscribe / signoff / archive access instructions, >send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: ISPF startup processing
Well, Kolusu has hit on the edge of the bullseye! I searched the ISPPROF file, and found the split and swap command string in the ISPPROF member. It took a little magic from an old Rexx I had from who knows when (called ProfRead) that showed there is a ZSTART variable in ISPPROF. Closer look at the 7.3 function shows that only deals with ISRPROF, which is why I could not find it earlier. We were able to delete this variable from the table, and now we get the expected results. Thank you to all who had some great input - I now know lots of ways to get this result if I need them! Billy -- Original Message -- From: "Sri h Kolusu" To: IBM-MAIN@listserv.ua.edu Sent: 6/9/2021 11:55:04 AM Subject: Re: ISPF startup processing did not see anything for ZSTART or any variable with a Split or Swap command. Billy, I would then check if the user has any recorded macros that gets executed at logon. Does the same thing happen if that user logs on from a different PC ? I would also check USERID.ISPF.PROFILE dataset and do a SRCHFOR for SWAP/SPLIT and see if you can find it loaded in the profile. The Member ISRPROF should shed some light on this Thanks, Kolusu -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: ISPF startup processing
Hi Carmen, we use TPX here. I had a look at the user's setup, and for TSO they have only the APPLID, Modent, and ACL defined - all the rest are blank. Billy -- Original Message -- From: "Carmen Vitullo" To: IBM-MAIN@listserv.ua.edu Sent: 6/9/2021 11:37:11 AM Subject: Re: ISPF startup processing I still think there's a possibility its the session manager, most SM's can execute logon scripts, or macro's during signin, what SM do you use? the macro's or scripts can be user or group specific Carmen On 6/9/2021 10:30 AM, Billy Ashton wrote: Kolusu and Raphael, we checked 7.3, and issued L ZSTART, and in fact, scrolled through all 900 variables, and did not see anything for ZSTART or any variable with a Split or Swap command. Next thoughts? This is really a strange puzzle... Billy -- Original Message -- From: "Sri h Kolusu" To: IBM-MAIN@listserv.ua.edu Sent: 6/9/2021 11:17:15 AM Subject: Re: ISPF startup processing r example, while everyone else starts ISPF and has one window open, this user has 5 split screens defined and named, but he has no idea how. Billy, He probably has ZSTART coded. Check for the variable ZSTART from option 7.3 and it should show you how the 5 split screens are set up Thanks, Kolusu -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- *Carmen Vitullo* /“I am not bound to win, but I am bound to be true. I am not bound to succeed, but I am bound to live up to what light I have.” ― Abraham Lincoln/ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: ISPF startup processing
Kolusu and Raphael, we checked 7.3, and issued L ZSTART, and in fact, scrolled through all 900 variables, and did not see anything for ZSTART or any variable with a Split or Swap command. Next thoughts? This is really a strange puzzle... Billy -- Original Message -- From: "Sri h Kolusu" To: IBM-MAIN@listserv.ua.edu Sent: 6/9/2021 11:17:15 AM Subject: Re: ISPF startup processing r example, while everyone else starts ISPF and has one window open, this user has 5 split screens defined and named, but he has no idea how. Billy, He probably has ZSTART coded. Check for the variable ZSTART from option 7.3 and it should show you how the 5 split screens are set up Thanks, Kolusu -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: ISPF startup processing
Shalom Itschak, as I would have thought, the Command field is empty, which is why it sits at the READY prompt. -- Original Message -- From: "ITschak Mugzach" To: IBM-MAIN@listserv.ua.edu Sent: 6/9/2021 11:12:27 AM Subject: Re: ISPF startup processing In the logon screen, what is written in the command field? This is part of the racf Tao segment and loaded at logon time. Maybe it is isotope;split;split;split ITschak בתאריך יום ד׳, 9 ביוני 2021 ב-17:59 מאת Billy Ashton : Hello all...I don't know if there is an ISPF list, but hope you can help me here. I have a user that is having some strange things happening when he logs into TSO and goes into ISPF. For example, while everyone else starts ISPF and has one window open, this user has 5 split screens defined and named, but he has no idea how. Can someone tell me if there is a way to trace all the commands that get processed when he enters ISPSTART, or is there some magic way to have commands like multiple split screens issued automatically? Thank you for your kind thoughts! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- ITschak Mugzach *|** IronSphere Platform* *|* *Information Security Continuous Monitoring for z/OS, x/Linux & IBM I **| z/VM coming soon * -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: ISPF startup processing
The TSO logon script dumps the user to a READY prompt. Then the user selects either a specific application command for special processing or ISPSTART to get into ISPF. I don't see a special ISPSTART Clist/Rexx program in his Sysproc or Sysexec, so there must be something happening with ISPSTART. Billy -- Original Message -- From: "Carmen Vitullo" To: IBM-MAIN@listserv.ua.edu Sent: 6/9/2021 11:06:01 AM Subject: Re: ISPF startup processing Maybe the session manager - startup logon script? I recall when I started at my current job the systems folks that manage TPX thought it was a great idea to start a script that puts your session in split screen, one screen SDSF, one ISPF edit Carmen On 6/9/2021 9:58 AM, Billy Ashton wrote: Hello all...I don't know if there is an ISPF list, but hope you can help me here. I have a user that is having some strange things happening when he logs into TSO and goes into ISPF. For example, while everyone else starts ISPF and has one window open, this user has 5 split screens defined and named, but he has no idea how. Can someone tell me if there is a way to trace all the commands that get processed when he enters ISPSTART, or is there some magic way to have commands like multiple split screens issued automatically? Thank you for your kind thoughts! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- *Carmen Vitullo* /“I am not bound to win, but I am bound to be true. I am not bound to succeed, but I am bound to live up to what light I have.” ― Abraham Lincoln/ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
ISPF startup processing
Hello all...I don't know if there is an ISPF list, but hope you can help me here. I have a user that is having some strange things happening when he logs into TSO and goes into ISPF. For example, while everyone else starts ISPF and has one window open, this user has 5 split screens defined and named, but he has no idea how. Can someone tell me if there is a way to trace all the commands that get processed when he enters ISPSTART, or is there some magic way to have commands like multiple split screens issued automatically? Thank you for your kind thoughts! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: 3270 emulator / telnet with encryption
I know that QWS (Jolly Giant software) has a QWS 3270 Secure product. -- Original Message -- From: "Bill Giannelli" To: IBM-MAIN@listserv.ua.edu Sent: 5/5/2021 6:14:43 AM Subject: 3270 emulator / telnet with encryption Our network security group (with no mainframe knowledge) is complaining about the use of telnet for mainframe connections as they say it is not encrypted. We use attachmate and HOD. Are there any 3270 emulators that also do encryption? thanks Bill -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Datacentre Rack power clarification
You also might need to consider if you have redundant power supplies or redundant/diverse power sources. There will not be a single definition of power consumption based on the number of units or even the number of devices. A 12U rack used as a patch panel will have no consumption, but a 12u UPS rack will have much more. -- Original Message -- From: "Seymour J Metz" To: IBM-MAIN@listserv.ua.edu Sent: 5/5/2021 6:55:48 AM Subject: Re: Datacentre Rack power clarification That depends on the use profile. What equipment is in continuous use and what is standby. Are you counting power for cooling? -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of Peter [dbajava...@gmail.com] Sent: Wednesday, May 5, 2021 2:25 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Datacentre Rack power clarification Hello Apology for posting a non mainframe questions here . Is there a way to determine the total power consumption of rack with 12u as form factor ? I am sure some of them would have used a benchmark to design a solution for any new server coming inside the data center floor. So any clue or your experience would help me to analyse further. Peter -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
And the survey says...
Does Vista have the ability to only use one taskbar icon, and stack all the sessions as tabs within that one instance? I often have a number of sessions open, and would rather have one icon than bunches (especially since I can use a toolbar button to swap sessions). Here's hopin'! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: And the survey says...
Does Vista have the ability to only use one taskbar icon, and stack all the sessions as tabs within that one instance? I often have a number of sessions open, and would rather have one icon than bunches (especially since I can use a toolbar button to swap sessions). Here's hopin'! Billy -- Original Message -- From: "Jesse 1 Robinson" To: IBM-MAIN@listserv.ua.edu Sent: 4/28/2021 12:11:35 PM Subject: Re: And the survey says... I've used only Vista since the day long ago when Tom asked me to try out this new app he had written. Even though Attachmate remains the corporate standard (with no input from actual mainframe users). I've seen IBMers giving classes and demos using Vista. Interestingly, Tom himself always had Attachmate at the ready on his workstation when I couldn't be bothered. His reasoning: since it was the corporate standard, he needed to able to handle problem calls. . . J.O.Skip Robinson Southern California Edison Company Electric Dragon Team Paddler SHARE MVS Program Co-Manager 323-715-0595 Mobile 626-543-6132 Office ⇐=== NEW robin...@sce.com -Original Message- From: IBM Mainframe Discussion List On Behalf Of Farley, Peter x23353 Sent: Wednesday, April 28, 2021 8:23 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: (External):Re: And the survey says... *** EXTERNAL EMAIL - Use caution when opening links or attachments *** The github for pw3270 is here: https://github.com/PerryWerneck/pw3270 Safer than the government site Radoslaw posted, which my company's net nanny software prevented me from accessing because there are certificate problems. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Radoslaw Skorupka Sent: Wednesday, April 28, 2021 11:13 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: And the survey says... Advertisement: Apart from x3270 family (wc3270, wx3270...) there is another *free* emulator. It is pw3270 PW is Perry Werneck. github.com/PerryWerneck/pw3270 https://urldefense.com/v3/__https://softwarepublico.gov.br/social/pw3270/__;!!Ebr-cpPeAnfNniQ8HSAI-g_K5b7VKg!dpaA7q1qdSGtk8gMhBSNqPc1t_tsI6nwNUdS5YsYYDp7PetWBlyJPreC-fHXsIX6iFJ9nQ$ BTW: The last page is interesting - government official page with free software. Of course I get 10% of purchase price ;-) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Anyone have SFTP JCL to share?
Hi everyone! I was just moved to support a CA product (I guess that's Broadcom now), and have to send in a sensitive file to one of my support cases. The file is pretty large, and the support tech said I have to copy it to OMVS to use SFTP for uploading it. I am not sure I have that space available on the other side, so I was wondering if anyone here has a BPX batch job that will send a file to CA or Broadcom from the z/OS file without having to first copy the file to my Unix filesystem. I hope this is clear, and that someone can help me. Thanks! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
FTP multiple docs to IBM
Hi everyone...I am looking at how we upload our files for vendor support tickets, and it seems that every vendor does things differently. I had read somewhere that there is a program that IBM uses that allows customers to upload multiple files at once, including PDS or PDSE files, and it handles all the compression and FTP stuff. Does anyone here know about this, and does it work well? Do you know if it would work for other vendors, too? Thanks! Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Anyway to save ISRDDN output?
Is there a way to fire off ISRDDN in ISPF batch mode? Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Using symbolic DD names
Hi Lizette, as I noted originally, the vendor program uses control statements, where certain values are passed in on the control statement. These user-defined values drive the DD statement it is looking for. In my example, the table number is being passed in on a SYSIN control statement (it could be with the other parameters, like ,TBL=01,...) , and so the program knows it needs to find DD statement TB01DAT. Since it is vendor code, I don't know what the do internally, but I suspect with assembler, you can build your own DD statement on the fly before you try to open a file. Billy -- Original Message -- From: "Lizette Koehler" To: IBM-MAIN@listserv.ua.edu Sent: 12/30/2020 3:55:32 PM Subject: Re: Using symbolic DD names So the question becomes, can your Program handle a constantly changing DD Name? What would be the benefit from doing this? In Cobol you predefine (If I am allowed to use this word) the IO Section. Which specifies the DD name - consider that hard coded. I am not aware of any language construct that allows for a DD name to be randomly selected in a program. On z/OS I would be interested if anyone has an example. And yes Scheduling products can supply symbolics where native z/OS might now. Could you provide an example where your program when it executes would use a random DD name in JCL? Lizette -Original Message- From: IBM Mainframe Discussion List On Behalf Of Billy Ashton Sent: Wednesday, December 30, 2020 12:22 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Using symbolic DD names Hey folks! I have a vendor product program that looks for different DDnames depending on the control statements passed into the program. Is there any way to define a dynamic DD statement using JCL symbols? For example, I would love to have //TB to correspond to TB01DAT, TB14DAT, or TB67DAT if I use SET TNO=01 or 14 or 67. Is such a thing possible? I tried using an instream proc definition and INCLUDE MEMBER= that proc name, but that failed, and of course, I tried the straight up JCL as above, and it failed. What do you all think? Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Using symbolic DD names
Hey folks! I have a vendor product program that looks for different DDnames depending on the control statements passed into the program. Is there any way to define a dynamic DD statement using JCL symbols? For example, I would love to have //TB to correspond to TB01DAT, TB14DAT, or TB67DAT if I use SET TNO=01 or 14 or 67. Is such a thing possible? I tried using an instream proc definition and INCLUDE MEMBER= that proc name, but that failed, and of course, I tried the straight up JCL as above, and it failed. What do you all think? Billy -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN