Re: LE COBOL odd behavior
That is certainly interesting. Enterprise COBOL 4.2 (and prior!) usually do a dynamic allocation of SYSOUT if there is no JCL allocation. I have run in to cases where the dynamic allocation fails because the attempt to do it is being done in an I/O error routine. I can't recall offhand the exact error, but it's trying to ENQ a resource that is already enqueued by for the processing of that file, and thus can't do it for SYSPRINT at the same time. Or something like that. Although I've gotten an abend when this occurs, so maybe its not related to your issue at all! :-) Frank From: Scott Ford scott_j_f...@yahoo.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, June 7, 2012 9:25 AM Subject: Re: LE COBOL odd behavior Shmuel: Actually we have three apps written in LE Cobol, same issue on 1.12 ...Le Cobol 4.2 , when I inserted a //SYSOUT , everything is a-ok Scott J Ford Software Engineer http://www.identityforge.com From: Shmuel Metz (Seymour J.) shmuel+ibm-m...@patriot.net To: IBM-MAIN@bama.ua.edu Sent: Thursday, June 7, 2012 10:10 AM Subject: Re: LE COBOL odd behavior In 5ffa8470-9de8-4aad-b7a5-1bb653cec...@yahoo.com, on 06/05/2012 at 11:09 PM, Scott Ford scott_j_f...@yahoo.com said: No yucks please, a Display or Write to Sysprint takes a long time , in one case I cancelled a STC and the output was in sysprint, but under ISPs, sdf , not there at all. Just COBOL, or anything that dynamically allocates SYSOUT? Was the SYSOUT in the same IOT or different? -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Brain drain: Where Cobol systems go from here
Only if you are an incompetent company... From: Ed Gould edgould1...@comcast.net To: IBM-MAIN@bama.ua.edu Sent: Wednesday, May 23, 2012 2:31 PM Subject: Brain drain: Where Cobol systems go from here Brain drain: Where Cobol systems go from here -When the last Cobol programmers walk out the door, so may 50 years of business processes within the software they created. Will you be ready? http://www.computerworld.com/s/article/9227263/The_Cobol_Brain_Drain?taxonomyId=154 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Brain drain: Where Cobol systems go from here
Indeed, this is exactly what our company does. Our newest COBOL victim/developer (g) was working in a non-IT part of the company. I myself came from such a place. As have a not insignificant number of our other COBOL programmers. From: Thomas H Puddicombe tpudd...@csc.com To: IBM-MAIN@bama.ua.edu Sent: Wednesday, May 23, 2012 5:26 PM Subject: Re: Brain drain: Where Cobol systems go from here I'm almost old enough to admit I'm old. I remember a time when businesses would take the brightest young business minds they had, turn them over to folks like Steve (good teachers) for 90 days, and get back ... COBOL programmers who understood the business. Oddly enough, it was those 90-day wonders that ground out mass quantities of what is now called that moldy old COBOL code. Now, folks want to assert that today's youngsters are too stupid to turn into COBOL programmers? Well, dang it, sonny - the same thing was said about us back in the day - and see how that turned out. Tom Puddicombe Mainframe Performance Capacity Planning CSC 31 Brookdale Rd, Meriden, CT 06450 ITIS | (860) 428-3252 | tpudd...@csc.com | www.csc.com This is a PRIVATE message. If you are not the intended recipient, please delete without copying and kindly advise us by e-mail of the mistake in delivery. NOTE: Regardless of content, this e-mail shall not operate to bind CSC to any order or other contract unless pursuant to explicit written agreement or government initiative expressly permitting the use of e-mail for such purpose. From: Steve Comstock st...@trainersfriend.com To: IBM-MAIN@bama.ua.edu Date: 05/23/2012 05:55 PM Subject: Re: Brain drain: Where Cobol systems go from here Sent by: IBM Mainframe Discussion List IBM-MAIN@bama.ua.edu On 5/23/2012 3:39 PM, Roberts, John J wrote: When the last Cobol programmers walk out the door, so may 50 years of business processes within the software they created. Will you be ready? http://www.computerworld.com/s/article/9227263/The_Cobol_Brain_Drain? taxonomyId=154 Ed, Interesting article and fairly accurate IMO. This is what I can foresee happening: (1) Many companies will try to offshore their COBOL application support. But this won't work so well because it is hard enough to understand these systems without facing the complications of language and arcane terminology. And the young ones back in Bangalore will want to do Java, not COBOL. (2) Other companies will want to recruit overseas, either for CS grads that they can train, or for those few that are willing to invest in COBOL learning if that is what it takes to punch that H1B ticket. But even so, once here they are all going to be looking to do something else, not COBOL. So that company that recruits and trains a COBOL resource is going to be looking for a replacement within a couple years. (3) Efforts to train new young COBOL resources are going to flop, as the article mentions. Again, everyone expects COBOL to be a career dead-end once beyond a 5 to 10 year transition period. Not everyone. (4) In the end, US companies are going to be forced to pay a premium just to hang on to their old-timers long enough to buy time to implement that new ERP package or new custom application. The ones that will be successful doing this are going to be the ones that accommodate their senior developer's desires: lots of time off, telecommuting, job sharing, benefits, etc. John Ahem. We can help. Our problem is reaching the right people. We have a low visibility to training directors and above for most companies, even after more than three decades of providing top quality training to many mainframe organizations. Just too tech-y and not enough sales-y, I guess. So, everybody: help us and your company out: find out who is responsibile for your z/OS applications programmer training and pass this on... There seems to be a resurgence in attention being paid to the mainframe, to z/OS, and to COBOL. For good reason: * z/OS is still the premier operating system in terms of performance, security, and business services * COBOL has been modernized to work with new technologies: + Works with data encoded in ASCII and Unicode + WOrks with data stored in XML + Works with the web - COBOL CGIs can handle transactions from the web, accessing data from VSAM or DB2, then formatting output web pages (HTML) that include the requested information - can even serve up audio, video, and other multimedia files * COBOL is a clear, understandable language that is easy to code, debug, and maintain * COBOL code performs well, with no need for the overhead of Java, for example The Trainer's Friend has a complete z/OS COBOL curriculum, that can: * teach new COBOL developers how to code, test, debug, and maintain programs written in COBOL * teach experienced COBOL programmers new features of
/usr/lpp
Unimportant question, probably, but I've long wondered... What exactly does lpp stand for in this instance? Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: /usr/lpp
Given this is IBM, that sounds like a very good assumption. They must have a very interesting department of naming things. Frank From: Edward Jaffe edja...@phoenixsoftware.com To: IBM-MAIN@bama.ua.edu Sent: Friday, May 4, 2012 5:14 PM Subject: Re: /usr/lpp On 5/4/2012 4:02 PM, Frank Swarbrick wrote: Unimportant question, probably, but I've long wondered... What exactly does lpp stand for in this instance? I have long assumed it stood for 'licensed program products'. But I know not for sure... -- Edward E Jaffe Phoenix Software International, Inc 831 Parkview Drive North El Segundo, CA 90245 310-338-0400 x318 edja...@phoenixsoftware.com http://www.phoenixsoftware.com/ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: It's feeding time in Jurassic Park . . .
I know little about nothing in this regard, but given a zBx with an Intel processor (that, along with POWER7, is available right?), I can't see why you'd have to recompile anything. And in fact, could you not run Windows, Linux for Intel, and Solaris for Intel on zBx? Wouldn't you just be moving from standalone servers to zBx blades? I think there is some confusion where some have mis-interpreted this as moving to Linux for z, but it looks to me like this is not your intent. Frank From: George Henke gahe...@gmail.com To: IBM-MAIN@bama.ua.edu Sent: Friday, May 4, 2012 5:46 PM Subject: Re: It's feeding time in Jurassic Park . . . With all due respect Kerneels, I may indeed smell like a duck, quack like a duck, look like a duck, and walk like a duck, but I am not a duck. I represent a real entity which does not wish to telegraph its moves to the competition, so I use my personal email. That entity currently owns a z196 and a z114 and management requested me today to develop a strategy asap to migrate our 50 some odd Solaris servers and an equal number of Windows and Linux servers to zBx. I have never done this before. When confronted with such *showstoppers* I have always come here and never been disappointed by the wonderful support, generosity, and unselfish sharing of vital technical information by the listers. I regret it sounds like a fishing expedition, but it is for real. And I thank everyone here very much for the helpful guidance you have all already given me. It has jumped started the work. And I thank also very much all who have responded to me off list. The hints and tips, heads-up, and experienced technical advice is invaluable. Thank you all very much. Once again thank you all very much as always. . . On Fri, May 4, 2012 at 3:12 PM, Kerneels de Wet kerne...@absoftwareconsultants.com wrote: No disrespect but this looks a little like what the Fox channel dishes up for us on a daily basis: a) You post a message on IBMMAIN stating that you are starting a project but have no idea how to do it b) You use a nameless email account with a cellphone number listed as Poughkeepsie , NY c) The SHARE grease monkeys immediately respond with YOU are doing what ? You need to come talk to us d) The Health Care BIG spender responds with My management wants to go the other way Note: If it smells like a duck, quacks like a duck, looks like a duck, and walks like a duck...it should be on the FOX channel Kerneels -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- George Henke (C) 845 401 5614 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
DFSORT, no records for SORTOUT
I know of the NULLOUT and NULLOFL options to specify return code setting if there are no records to be written to the output file. I'm wondering if there is any option I can specify so that the SORTOUT file will not even be opened if there are no records to be written to it. Basically, I want to leave the old records that were in SORTOUT alone if there is nothing new to go in to it for this run. At this point the best thing I can think of is to run SORT twice; the first time copying one record to a dummy file with NULLOUT=RC4 set. Then skipping step 2, the actual copy into the real SORTOUT, if the RC from step 1 is not 0. If there is a program other than SORT (IDCAMS?) that I can use to accomplish this, that's fine as well. No actual sorting is being done; just a straight copy. Thanks, Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: DFSORT, no records for SORTOUT
That works. Thanks! I've not used ICETOOL before. One minor thing. I wish I could skip steps (or conditionally execute them) rather than having the job set RC12. Something like how IDCAMS works: COUNT FROM(TC33IN) EMPTY RC4 IF LASTCC = 0 THEN COPY FROM(TC33IN) TO(TC33OUT) ELSE IF LASTCC = 4 THEN SET MAXCC=0 Oh well! Thanks again, Frank From: Frank Yaeger yae...@us.ibm.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, April 19, 2012 11:38 AM Subject: Re: DFSORT, no records for SORTOUT Frank Swarbrick at IBM Mainframe Discussion List IBM-MAIN@bama.ua.edu wrote on 04/19/2012 10:22:56 AM: I know of the NULLOUT and NULLOFL options to specify return code setting if there are no records to be written to the output file. I'm wondering if there is any option I can specify so that the SORTOUT file will not even be opened if there are no records to be written to it. Basically, I want to leave the old records that were in SORTOUT alone if there is nothing new to go in to it for this run. At this point the best thing I can think of is to run SORT twice; the first time copying one record to a dummy file with NULLOUT=RC4 set. Then skipping step 2, the actual copy into the real SORTOUT, if the RC from step 1 is not 0. If there is a program other than SORT (IDCAMS?) that I can use to accomplish this, that's fine as well. No actual sorting is being done; just a straight copy. Frank, You could use a DFSORT ICETOOL job with COUNT and COPY like this: //S1 EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //IN DD DSN=... input file //OUT DD DSN=... output file //TOOLIN DD * MODE STOP COUNT FROM(IN) EMPTY RC12 COPY FROM(IN) TO(OUT) /* If IN is emtpy, the COUNT operator will set RC=12 and the COPY operator will NOT be executed so OUT will not be opened. The step will give back cc=12. COUNT does not require an output data set. If IN is not empty, the COUNT operator will set RC=0 and the COPY operator will be executed so OUT will be opened and IN will be copied to it. The step will give back cc=0 Note that MODE STOP is the default so you don't have to specify it, but I put it in for doc purposes. Frank Yaeger - DFSORT Development Team (IBM) - yae...@us.ibm.com Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration = DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: DFSORT, no records for SORTOUT
My very own local sysprog came up with the ideal solution. //TC33COPY JOB NOTIFY=SYSUID //CONDCOPY EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PRINT INFILE(TC33IN) CHAR COUNT(1) IF LASTCC = 0 THEN REPRO INFILE(TC33IN) OUTFILE(TC33OUT) ELSE IF LASTCC = 4 THEN SET MAXCC=0 /* //TC33IN DD DISP=SHR,DSN=PROD.VISAEP4.TC33EX //TC33OUT DD DSN=DEV.CVSC.TC33EX, // DISP=SHR, // LIKE=PROD.VISAEP.TC33EX Results: IDCAMS SYSTEM SERVICES PRINT INFILE(TC33IN) CHAR COUNT(1) IDCAMS SYSTEM SERVICES LISTING OF DATA SET -PROD.VISAEP4.TC33EX IDC11462I REQUESTED RANGE END BEYOND END OF DATA SET. IDC0005I NUMBER OF RECORDS PROCESSED WAS 0 IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 4 IDCAMS SYSTEM SERVICES IF LASTCC = 0 THEN REPRO INFILE(TC33IN) OUTFILE(TC33OUT) IDC0204I PRECEDING COMMAND BYPASSED DUE TO CONDITION CODES ELSE IF LASTCC = 4 THEN SET MAXCC=0 IDC0002I IDCAMS PROCESSING COMPLETE. MAXIMUM CONDITION CODE WAS 0 Exactly what I was looking for. Thanks Bill!! Frank From: Frank Swarbrick frank.swarbr...@yahoo.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, April 19, 2012 12:16 PM Subject: Re: DFSORT, no records for SORTOUT That works. Thanks! I've not used ICETOOL before. One minor thing. I wish I could skip steps (or conditionally execute them) rather than having the job set RC12. Something like how IDCAMS works: COUNT FROM(TC33IN) EMPTY RC4 IF LASTCC = 0 THEN COPY FROM(TC33IN) TO(TC33OUT) ELSE IF LASTCC = 4 THEN SET MAXCC=0 Oh well! Thanks again, Frank From: Frank Yaeger yae...@us.ibm.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, April 19, 2012 11:38 AM Subject: Re: DFSORT, no records for SORTOUT Frank Swarbrick at IBM Mainframe Discussion List IBM-MAIN@bama.ua.edu wrote on 04/19/2012 10:22:56 AM: I know of the NULLOUT and NULLOFL options to specify return code setting if there are no records to be written to the output file. I'm wondering if there is any option I can specify so that the SORTOUT file will not even be opened if there are no records to be written to it. Basically, I want to leave the old records that were in SORTOUT alone if there is nothing new to go in to it for this run. At this point the best thing I can think of is to run SORT twice; the first time copying one record to a dummy file with NULLOUT=RC4 set. Then skipping step 2, the actual copy into the real SORTOUT, if the RC from step 1 is not 0. If there is a program other than SORT (IDCAMS?) that I can use to accomplish this, that's fine as well. No actual sorting is being done; just a straight copy. Frank, You could use a DFSORT ICETOOL job with COUNT and COPY like this: //S1 EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //IN DD DSN=... input file //OUT DD DSN=... output file //TOOLIN DD * MODE STOP COUNT FROM(IN) EMPTY RC12 COPY FROM(IN) TO(OUT) /* If IN is emtpy, the COUNT operator will set RC=12 and the COPY operator will NOT be executed so OUT will not be opened. The step will give back cc=12. COUNT does not require an output data set. If IN is not empty, the COUNT operator will set RC=0 and the COPY operator will be executed so OUT will be opened and IN will be copied to it. The step will give back cc=0 Note that MODE STOP is the default so you don't have to specify it, but I put it in for doc purposes. Frank Yaeger - DFSORT Development Team (IBM) - yae...@us.ibm.com Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration = DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM
Re: DFSORT, no records for SORTOUT
If there are new records I don't want to retain the old records in the output file. But if there are no new records I want the output file to retain the old records. From: Walt Farrell walt.farr...@gmail.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, April 19, 2012 4:30 PM Subject: Re: DFSORT, no records for SORTOUT On Thu, 19 Apr 2012 10:22:56 -0700, Frank Swarbrick frank.swarbr...@yahoo.com wrote: I know of the NULLOUT and NULLOFL options to specify return code setting if there are no records to be written to the output file. I'm wondering if there is any option I can specify so that the SORTOUT file will not even be opened if there are no records to be written to it. Basically, I want to leave the old records that were in SORTOUT alone if there is nothing new to go in to it for this run. Is there some reason you couldn't just use DISP=MOD on your SORTOUT DD statement? -- Walt -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Execute certain steps based on input parm
Whomever it was that invented the entire COND construct in JCL was severely demented; with the ABENDCC options being only a small part of it! :-( From: Joel C. Ewing jcew...@acm.org To: IBM-MAIN@bama.ua.edu Sent: Wednesday, April 18, 2012 11:25 AM Subject: Re: Execute certain steps based on input parm I confess to having less familiarity with ABENDCC keyword forms, never having had a need to use one. So, U001 in ABENDCC=U001 is a lexical part of a keyword? Good Lord, who invented this syntax? So in the context of an IF statement relational expression, = is both a relational operator and also a lexical part of such key words as the above. A rational person familiar with practically any other programming language (and with other JCL relational expressions) would intuitively expect given ABENDCC=U001 as valid, for ABENDCC = U001, ABENDCC EQ U001, and ABENDCC NE U001 to all be legal syntax, which they apparently are not. It is a confusing and unnatural syntactic act to permit the same special symbol to serve as both an operator and as part of a keyword! -- Joel C. Ewing, Bentonville, AR jcew...@acm.org -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
JCL help (yes, with COND)
I have the following job (cut down to include only the relevant parts): //VAPPROC4 JOB //BACKUP1 EXEC PROC=SORTBKUP,COND=(4,LT) //EP4IN EXEC PROC=EP4IN,COND=(4,LT) //E4INPRT EXEC PROC=E4INPRT // The EP4IN PROC is a vendor supplied proc as follows: //EP4IN PROC //STEP01 EXEC PGM=IEFBR14,COND=(20,LT) //STEP01A EXEC PGM=IEFBR14,COND=(20,LT) //STEP02 EXEC PGM=EPZOS,COND=(20,LT) //STEP03 EXEC PGM=IDCAMS,COND=(7,LT) //STEP04 EXEC PGM=EPTBLUPD // IF ( STEP04.RC = 3 ) THEN //STEP05 EXEC PGM=IEBGENER,COND=((7,LT),(4,LT,STEP03),(4,LT,STEP04)) // ENDIF // IF ( STEP04.RC = 0 | STEP04.RC = 4 ) THEN //STEPLAST EXEC EPLINK99 // ENDIF //EP4IN PEND //STEP06 EXEC PGM=IEBGENER,COND=(24,LT) //STEP07 EXEC PGM=EPX99,COND=(20,LT) //EP4IN PROC I've already solved my issue (which I will detail below), but I'm still unclear as to why what I had was wrong, and why my fix actually fixes it. The issue is that EP4IN.STEP06 and EP4IN.STEP07 were not being executed: IEF202I VAPPROC4 STEP06 EP4IN - STEP WAS NOT RUN BECAUSE OF CONDITION CODES IEF272I VAPPROC4 STEP06 EP4IN - STEP WAS NOT EXECUTED. IEF202I VAPPROC4 STEP07 EP4IN - STEP WAS NOT RUN BECAUSE OF CONDITION CODES IEF272I VAPPROC4 STEP07 EP4IN - STEP WAS NOT EXECUTED. STEPNAME PROCSTEP RC BACKUP1 BACKUP 00 EP4IN STEP01 00 EP4IN STEP01A 00 EP4IN STEP02 00 EP4IN STEP03 05 EP4IN STEP04 FLUSH EP4IN STEP05 FLUSH STEPLAST STEP16 FLUSH STEPLAST STEP17 FLUSH EP4IN STEP06 FLUSH EP4IN STEP07 FLUSH (It's expected that EP4IN.STEP04, EP4IN.STEP05, STEPLAST.STEP16 and STEPLAST.STEP17 do not execute under these conditions, becasue EP4IN.STEP03 resulted in RC=05; they execute only when RC=03 for this step.) Anyway, the solution is to remove the COND parameter from the EXEC PROC=EP4IN. My new result follows: BACKUP1 BACKUP 00 EP4IN STEP01 00 EP4IN STEP01A 00 EP4IN STEP02 00 EP4IN STEP03 05 EP4IN STEP04 FLUSH EP4IN STEP05 FLUSH STEPLAST STEP16 FLUSH STEPLAST STEP17 FLUSH EP4IN STEP06 00 EP4IN STEP07 00 E4INPRT REPORT 00 What really was the issue and why did my solution resolve it? My reason for including this parameter is so that EP4IN should be bypassed if BACKUP1 fails. Once again I ponder the sanity of the inventor of COND. Thanks, Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: JCL help (yes, with COND)
Sorry, my cut and paste went awry. Should be this: //EP4IN PROC //STEP01 EXEC PGM=IEFBR14,COND=(20,LT) //STEP01A EXEC PGM=IEFBR14,COND=(20,LT) //STEP02 EXEC PGM=EPZOS,COND=(20,LT) //STEP03 EXEC PGM=IDCAMS,COND=(7,LT) //STEP04 EXEC PGM=EPTBLUPD // IF ( STEP04.RC = 3 ) THEN //STEP05 EXEC PGM=IEBGENER,COND=((7,LT),(4,LT,STEP03),(4,LT,STEP04)) // ENDIF // IF ( STEP04.RC = 0 | STEP04.RC = 4 ) THEN //STEPLAST EXEC EPLINK99 // ENDIF //STEP06 EXEC PGM=IEBGENER,COND=(24,LT) //STEP07 EXEC PGM=EPX99,COND=(20,LT) //EP4IN PEND Anyway, I did totally misunderstand how COND works when executing a PROC rather than a PGM. Thanks! As for mixing IF/THEN/ELSE with COND, as I said, its a vendor supplied PROC. Definitely don't want to mess with it. But it looks like you're saying I can use IF/THEN logic to skip the EP4IN step if the BACKUP1 step fails. So I will do that. As much as I hate COND, at least it fits within how JCL otherwise looks, which is more than I can say for IF/THEN/ELSE! Oh well! Thanks again, Frank From: Joel C. Ewing jcew...@acm.org To: IBM-MAIN@bama.ua.edu Sent: Wednesday, April 18, 2012 1:14 PM Subject: Re: JCL help (yes, with COND) On 04/18/2012 12:43 PM, Frank Swarbrick wrote: I have the following job (cut down to include only the relevant parts): //VAPPROC4 JOB //BACKUP1 EXEC PROC=SORTBKUP,COND=(4,LT) //EP4IN EXEC PROC=EP4IN,COND=(4,LT) //E4INPRT EXEC PROC=E4INPRT // The EP4IN PROC is a vendor supplied proc as follows: //EP4IN PROC //STEP01 EXEC PGM=IEFBR14,COND=(20,LT) //STEP01A EXEC PGM=IEFBR14,COND=(20,LT) //STEP02 EXEC PGM=EPZOS,COND=(20,LT) //STEP03 EXEC PGM=IDCAMS,COND=(7,LT) //STEP04 EXEC PGM=EPTBLUPD // IF ( STEP04.RC = 3 ) THEN //STEP05 EXEC PGM=IEBGENER,COND=((7,LT),(4,LT,STEP03),(4,LT,STEP04)) // ENDIF // IF ( STEP04.RC = 0 | STEP04.RC = 4 ) THEN //STEPLAST EXEC EPLINK99 // ENDIF //EP4IN PEND //STEP06 EXEC PGM=IEBGENER,COND=(24,LT) //STEP07 EXEC PGM=EPX99,COND=(20,LT) //EP4IN PROC I've already solved my issue (which I will detail below), but I'm still unclear as to why what I had was wrong, and why my fix actually fixes it. The issue is that EP4IN.STEP06 and EP4IN.STEP07 were not being executed: IEF202I VAPPROC4 STEP06 EP4IN - STEP WAS NOT RUN BECAUSE OF CONDITION CODES IEF272I VAPPROC4 STEP06 EP4IN - STEP WAS NOT EXECUTED. IEF202I VAPPROC4 STEP07 EP4IN - STEP WAS NOT RUN BECAUSE OF CONDITION CODES IEF272I VAPPROC4 STEP07 EP4IN - STEP WAS NOT EXECUTED. STEPNAME PROCSTEP RC BACKUP1 BACKUP 00 EP4IN STEP01 00 EP4IN STEP01A 00 EP4IN STEP02 00 EP4IN STEP03 05 EP4IN STEP04 FLUSH EP4IN STEP05 FLUSH STEPLAST STEP16 FLUSH STEPLAST STEP17 FLUSH EP4IN STEP06 FLUSH EP4IN STEP07 FLUSH (It's expected that EP4IN.STEP04, EP4IN.STEP05, STEPLAST.STEP16 and STEPLAST.STEP17 do not execute under these conditions, becasue EP4IN.STEP03 resulted in RC=05; they execute only when RC=03 for this step.) Anyway, the solution is to remove the COND parameter from the EXEC PROC=EP4IN. My new result follows: BACKUP1 BACKUP 00 EP4IN STEP01 00 EP4IN STEP01A 00 EP4IN STEP02 00 EP4IN STEP03 05 EP4IN STEP04 FLUSH EP4IN STEP05 FLUSH STEPLAST STEP16 FLUSH STEPLAST STEP17 FLUSH EP4IN STEP06 00 EP4IN STEP07 00 E4INPRT REPORT 00 What really was the issue and why did my solution resolve it? My reason for including this parameter is so that EP4IN should be bypassed if BACKUP1 fails. Once again I ponder the sanity of the inventor of COND. Thanks, Frank The EP4IN PROC seems to have an embedded PEND and then a spurious PROC statement at the end (where the PEND should be ?). I suspect the problem is that combining COND on an EXEC PROC with embedded use of COND inside a PROC does not interact well and seldom does what one might expect/want. The COND on the EXEC PROC statement does not determine whether that EXEC is performed -- it instead overrides the COND parameter on every EXEC within the PROC and determines when steps within the PROC will be executed, completely ignoring any original carefully thought out conditional logic using COND on EXECs within the PROC definition itself. As a side issue, mixing IF/THEN/ELSE conditional execution with use of COND is so highly confusing, we always recommended not introducing the new forms without converting old EXEC COND usage to IF/THEN/ELSE statements at the same time (except possibly for COND on the JOB statement). Also one can use IF/THEN/ELSE in the main JCL stream without the bizarre override issues you get with COND on the EXEC PROC. -- Joel C. Ewing, Bentonville, AR jcew...@acm.org -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu
Re: Modernizing the BCP code ?
Haha, I think there were GCC projects for both COBOL and PL/I, but both are stagnate (and probably incomplete). One can still dream, though! Frank From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Sent: Friday, April 13, 2012 12:53 PM Subject: Re: Modernizing the BCP code ? Sounds like what is done by the GNU compiler people. From what I've read, all the GNU compilers utilize the same back end code generator. IIRC, at one time the non-C compilers really did a language to C conversion, followed by a C compile. I don't know if I have the terminology correct, but now all the compilers in the GCC collection emit a parse tree(?) and pass that to the common back end for actual optimization and code generation. Now if they would just create a COBOL and PL/I compiler front end, I would be in 7th heaven. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Edward Jaffe Sent: Friday, April 13, 2012 1:10 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Modernizing the BCP code ? On 4/13/2012 10:46 AM, David Crayford wrote: On 14/04/2012 1:38 AM, Edward Jaffe wrote: On 4/12/2012 9:03 AM, David Crayford wrote: AFAIK, the PL/X compiler shares a back-end with the other code optimizers, so should produce excellent code. Not yet. So does that mean that the PL/X compiler produces inferior code to the Metal/C compiler? That would be disappointing considering the majority of the operating system is writen in PL/X! Yes. This has been one of the justifications for not having a new z/OS Architectural Level Set i.e., the existing PL/X compiler cannot generate code that takes advantage of the newer hardware features, so why force customers to upgrade unnecessarily? The compiler was given to the folks in Toronto a couple/few years ago with the intent of having it enhanced with the smart back end used for other IBM compilers. Given that z/OS V2.1 will require z9 processors there is even more pressure on Toronto to deliver this much needed plumbing enhancement. -- Edward E Jaffe Phoenix Software International, Inc 831 Parkview Drive North El Segundo, CA 90245 310-338-0400 x318 edja...@phoenixsoftware.com http://www.phoenixsoftware.com/ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Modernizing the BCP code ?
OpenCOBOL is not part of the GCC. OpenCOBOL converts COBOL to C; then it invokes the C compiler to compile the result. From: Farley, Peter x23353 peter.far...@broadridge.com To: IBM-MAIN@bama.ua.edu Sent: Friday, April 13, 2012 2:13 PM Subject: Re: Modernizing the BCP code ? http://www.opencobol.org/ HTH Peter -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Frank Swarbrick Sent: Friday, April 13, 2012 4:07 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Modernizing the BCP code ? Haha, I think there were GCC projects for both COBOL and PL/I, but both are stagnate (and probably incomplete). One can still dream, though! Frank From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Sent: Friday, April 13, 2012 12:53 PM Subject: Re: Modernizing the BCP code ? Sounds like what is done by the GNU compiler people. From what I've read, all the GNU compilers utilize the same back end code generator. IIRC, at one time the non-C compilers really did a language to C conversion, followed by a C compile. I don't know if I have the terminology correct, but now all the compilers in the GCC collection emit a parse tree(?) and pass that to the common back end for actual optimization and code generation. Now if they would just create a COBOL and PL/I compiler front end, I would be in 7th heaven. -- 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...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: PL/I with variable PLISTs (was: LE C calling HLASM)
It was. Program 'callee' in my example below. (My example has three programs; 'callopt' calls 'callee'. 'callee' should call 'print-string' only for parms that were passed from program 'callopt'. I did not show the code for 'print-string', as it is not being passed a variable number of parameters. Frank - Original Message - From: Victor Gil victor@broadridge.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Thursday, April 12, 2012 9:48 AM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) Frank, The LINKAGE SECTION items and the 2 statements SET A-POINTER TO ADDRESS OF INPUT-LENGTH IF BIN-WORD 0 THEN the high-bit is ON should be coded in the CALLED SUBROUTINE [in your case print-string] to determine what was passed by the CALLER. Sorry, if this was not obvious from the first note. -Victor- Date: Wed, 11 Apr 2012 10:38:26 -0700 From: Frank Swarbrick frank.swarbr...@yahoo.com Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) Hmmm Have you (or anyone) actually verified that this works? I just wrote the following programs: identification division. program-id. callopt. data division. working-storage section. 77 one pic x(4) value z'one'. call 'callee' using one goback. end program callopt. id division. program-id. 'callee'. data division. local-storage section. 77 addr pointer. 77 addr-val redefines addr pic s9(9) comp-5. linkage section. 01 string-1 pic x(101). 01 string-2 pic x(101). 01 result pic s9(8) comp-5. procedure division using string-1 string-2 returning result. call 'print-string' using string-1 set addr to address of string-1 if addr-val not less than zero call 'print-string' using string-2. move zero to result goback. When I run it, according to COBOL ADDR is set to x0F0960B8. I am guessing that the high-order bit is in fact set, but that COBOL does not reveal that implementation detail to the COBOL application. Either that or I am doing something wrong. Frank - Original Message - From: Victor Gil victor@broadridge.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Wednesday, April 11, 2012 9:36 AM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) LINKAGE SECTION. 01 A-POINTER USAGE POINTER. 01 BIN-WORD REDEFINES A-POINTER COMP S9(8). ... CALL 'THEFUNCTION' USING MAGIC, INPUT-BUFFER, INPUT-LENGTH, OMITTED, OMITTED RETURNING RC. SET A-POINTER TO ADDRESS OF INPUT-LENGTH IF BIN-WORD 0 THEN the high-bit is ON -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Modernizing the BCP code ?
According to Tom Ross (of IBM COBOL development) at SHARE last year, they are working on migrating the back end to the same one that PL/I uses. (And I am assuming the same one some of the other languages also use.) No idea if that would fix COBOL arithmetic. Frank - Original Message - From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Thursday, April 12, 2012 10:45 AM Subject: Re: Modernizing the BCP code ? Now that you mention it, I remember that the C/C++ compiler has a architecture option to control the instructions generated. I should have known that the PL/X compiler would too. I didn't know that they both share the same back-end. I wish that the COBOL compiler did. I am constantly amazed at the amount of code generate by a simpe: ADD +1 TO WS-INTEGER. when WS-INTEGER is defined as PIC S9(9) BINARY or NATIVE. COBOL seems to have an inordinate love for PACKED-DECIMAL. Someone once said it was due to ANSI standards compliance. Might be worth it, in CPU saved, to license the C compiler and port the OpenCOBOL Unless I somehow have the wrong compile parameters. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of David Crayford Sent: Thursday, April 12, 2012 11:04 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Modernizing the BCP code ? AFAIK, the PL/X compiler shares a back-end with the other code optimizers, so should produce excellent code. The compiler team is in Toronto and I was lucky enough to talk to a few at Share in Orlando. As it stands z/OS needs to run on machines as old as a z/800. So the architecture level (ARCH(n)) of BCP code has to support old hardware. As Bob Shannon mentioned, with z/OS going to a new version IBM can safely recompile the BCP PL/X code for not so ancient boxes. On 12/04/2012 11:14 PM, McKown, John wrote: First thing to wonder about is: Has IBM upgraded the PL/AS(current name?) compiler to emit Relative and Immediate instructions?. Most of the BCP is supposedly written in PL/AS, not HLASM. Second, for those modules which are written in HLASM, is it cost effective to IBM to systematically update the source from the older instructions? Why would it be? The new instructions may (or may not) be less resource efficient that the older versions.I doubt that many are more efficient (LHI being more efficient seems likely). Many of the RI instructions are longer than the corresponding Base+Displacement instruction. The simpliest thing for IBM would be to use the IEABRCX macro to change all the branch instructions to branch relative instructions. But you can't do that type of OPSYN method to do something like replacing the LA with an LARL. So replacing LA with LARL would require looking at every LA instruction to see if it could be replaced by an LARL. The same with replacing selec! te! d L and LH with LHI, which would verifying that the value being loaded is indeed never modified. And I don't see a general way to do it if they are inside a macro. And an LARL may not be the best idea simply because it is 6 bytes instead of the LA instruction's 4 bytes. So, at the very least, it will take up more space in the I-cache hardware. Other immediate instructions may also require more bytes that the replaced instruction. So, IMO, a command such as Replace all base+displacement instructions in a program with the corresponding RI instruction, whenever possible. is not a good idea. IMO, the only time to use a relative instruction is in baseless code. Only use baseless coding when you are either out of registers or you need too many base registers due to the size of the program. Which, in HLASM programs, usually means the program is too big and should be split up somehow. Again, the only time to use immediate instructions is when the value is a constant and will fit into a halfword. Why a halfword? Because the LHI is the same number of bytes as the LH or L instruction, taking up the same I-cache space. And because the immediate instructions to load a
Re: Modernizing the BCP code ?
I actually checked that. The code is slightly different, but I don't see that it's much better. 01 FULLWORD-SORTOF PIC S9(9) BINARY VALUE +9. 09 ADD 100 TO FULLWORD-SORTOF 000354 GN=16 EQU * 000354 4820 A01C LH 2,28(0,10) PGMLIT AT +20 000358 8E20 0020 SRDA 2,32(0) 00035C 5840 8000 L 4,0(0,8) FULLWORD-SORTOF 000360 8E40 0020 SRDA 4,32(0) 000364 1A42 AR 4,2 000366 1E53 ALR 5,3 000368 58B0 C02C L 11,44(0,12) PBL=1 00036C 47C0 B16C BC 12,364(0,11) GN=17(000374) 000370 5A40 C004 A 4,4(0,12) SYSLIT AT +4 000374 GN=17 EQU * 000374 5D40 C000 D 4,0(0,12) SYSLIT AT +0 000378 5040 8000 ST 4,0(0,8) FULLWORD-SORTOF 01 FULLWORD-SORTOF PIC S9(9) COMP-5 VALUE +9. 09 ADD 100 TO FULLWORD-SORTOF 000350 GN=16 EQU * 000350 5820 8000 L 2,0(0,8) FULLWORD-SORTOF 000354 8E20 0020 SRDA 2,32(0) 000358 4840 A01C LH 4,28(0,10) PGMLIT AT +20 00035C 8E40 0020 SRDA 4,32(0) 000360 1A24 AR 2,4 000362 1E35 ALR 3,5 000364 58B0 C028 L 11,40(0,12) PBL=1 000368 47C0 B16C BC 12,364(0,11) GN=17(000370) 00036C 5A20 C000 A 2,0(0,12) SYSLIT AT +0 000370 GN=17 EQU * 000370 5030 8000 ST 3,0(0,8) FULLWORD-SORTOF Of course I am not an assembler programmer, so maybe it is better? Frank - Original Message - From: David Andrews d...@lists.duda.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Thursday, April 12, 2012 11:23 AM Subject: Re: Modernizing the BCP code ? On Thu, 2012-04-12 at 12:45 -0400, McKown, John wrote: I am constantly amazed at the amount of code generate by a simpe: ADD +1 TO WS-INTEGER. when WS-INTEGER is defined as PIC S9(9) BINARY Try defining it as COMP-5 (or compile with TRUNC(BIN)) and see if that improves the generated code? -- David Andrews A. Duda Sons, Inc. david.andr...@duda.com -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: PL/I with variable PLISTs (was: LE C calling HLASM)
I wonder if this would work: declare THEFUNCTION entry returns(fixed bin) options(nodescriptor, linkage(system), fetchable); result = THEFUNCTION(magic, parm1, parm2); result = THEFUNCTION(magic, parm1, parm2, parm3, parm4); Frank - Original Message - From: Phil Smith p...@voltage.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Tuesday, April 10, 2012 1:54 PM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) Steve Comstock wrote: Yes. But that's Assembler. I thought the called routine was C, and you were testing the parms passed in the C routine. Is that not true? Are there more layers here? Yes, there are lots of layers, it's a mixture of assembler and C, sorry. The point is, we're confident that the description of the behavior we've seen is as described (we have XDC, too, so can see some of it). it's very strange-as if nobody at IBM ever really tried to use variable plists with PL/I! -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: PL/I with variable PLISTs (was: LE C calling HLASM)
Thanks. Steve Comstock's method does work, in any case. Frank - Original Message - From: Victor Gil victor@broadridge.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Thursday, April 12, 2012 1:59 PM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) Frank, I just re-tested my suggestion and you are right, it DOES NOT work [not to mention the wrong location for A-POINTER, as it should be in WORKING-STORAGE rather than in LINKAGE]. This made me curious as I vaguely remember dealing with a variable p-list in COBOL. It turns out I was calling a simple Assembler subroutine, below, to return back the registers. Apologies for mis-information, -Victor- YREGS COB#REGS CSECT COB#REGS AMODE ANY COB#REGS RMODE ANY * * Sample invocation: * CALL 'COB#REGS' USING R0-R15 (ARRAY OF 16 FULLWORDS) * ST R15,12+4(,R13) - SAVE R15 USING PARMS,R1 L R15,PARM_PTR - PARM POINTER USING PARM,R15 STM R0,R15,PARM - PASS REGS MVC PARM+4*15(4),12+4(R13) - ... AND FIX R15 * SR R15,R15 - ALWAYS OK BR R14 - DONE * PARMS DSECT PARM_PTR DS A * PARM_D DSECT PARM DS (16)A * END It was. Program 'callee' in my example below. (My example has three programs; 'callopt' calls 'callee'. 'callee' should call 'print-string' only for parms that were passed from program 'callopt'. I did not show the code for 'print-string', as it is not being passed a variable number of parameters. Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Modernizing the BCP code ?
Wow, I didn't figure there'd be that much difference between adding to a halfword vs a fullword. Interesting. Frank - Original Message - From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Thursday, April 12, 2012 2:46 PM Subject: Re: Modernizing the BCP code ? T hat code sequence is what I remember. But I did my own, minor testing and my results with OPT(FULL) and TRUNC(BIN) and TRUNC(OPT). And it basically was LH/AH/STH or LA/AH/STH. In the fullword case, all the SRDAs and extra instructions are done to detect overflow. I guess don't know why they are being generated, except that they are required even in the TRUNC(BIN) TRUNC(OPT) environments because the ADD (and all the other computational verbs) may have an ON SIZE ERROR clause. Apparently this clause is required to fire if the result of the computation would not fit into the number of digits specified in the PICTURE clause. And the compiler doesn't modify the instruction sequence even if the sentence does not have an ON SIZE ERROR clause. I don't know if I'm saying that very well. Basically the COBOL code generator has one code sequence to add two fullwords together. It's only when it goes to store the result that it looks at the TRUNC option to see if it can store the binary result, or needs to truncate the result based on the TRUNC option. It turns out that the case of using halfwords these extra instructions are not needed because the overflow detection can be done by a simple compare of the absolute value of the result being greater than the number of decimal digits in the receiving field. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets® 9151 Boulevard 26 . N. Richland Hills . TX 76010 (817) 255-3225 phone . john.mck...@healthmarkets.com . www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets® is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company®, Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Frank Swarbrick Sent: Thursday, April 12, 2012 1:07 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Modernizing the BCP code ? I actually checked that. The code is slightly different, but I don't see that it's much better. 01 FULLWORD-SORTOF PIC S9(9) BINARY VALUE +9. 09 ADD 100 TO FULLWORD-SORTOF 000354 GN=16 EQU * 000354 4820 A01C LH 2,28(0,10) PGMLIT AT +20 000358 8E20 0020 SRDA 2,32(0) 00035C 5840 8000 L 4,0(0,8) FULLWORD-SORTOF 000360 8E40 0020 SRDA 4,32(0) 000364 1A42 AR 4,2 000366 1E53 ALR 5,3 000368 58B0 C02C L 11,44(0,12) PBL=1 00036C 47C0 B16C BC 12,364(0,11) GN=17(000374) 000370 5A40 C004 A 4,4(0,12) SYSLIT AT +4 000374 GN=17 EQU * 000374 5D40 C000 D 4,0(0,12) SYSLIT AT +0 000378 5040 8000 ST 4,0(0,8) FULLWORD-SORTOF 01 FULLWORD-SORTOF PIC S9(9) COMP-5 VALUE +9. 09 ADD 100 TO FULLWORD-SORTOF 000350 GN=16 EQU * 000350 5820 8000 L 2,0(0,8) FULLWORD-SORTOF 000354 8E20 0020 SRDA 2,32(0) 000358 4840 A01C LH 4,28(0,10) PGMLIT AT +20 00035C 8E40 0020 SRDA 4,32(0) 000360 1A24 AR 2,4 000362 1E35 ALR 3,5 000364 58B0 C028 L 11,40(0,12) PBL=1 000368 47C0 B16C BC 12,364(0,11) GN=17(000370
Re: PL/I with variable PLISTs (was: LE C calling HLASM)
Cool trick! Probably a bit(!) confusing to application developers who really don't understand how program linkage works, but definitely cool. - Original Message - From: Steve Comstock st...@trainersfriend.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Tuesday, April 10, 2012 8:15 PM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) On 4/10/2012 4:33 PM, Frank Swarbrick wrote: - Original Message - From: Phil Smithp...@voltage.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Tuesday, April 10, 2012 3:31 PM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) Bernd Oppolzer wrote: I don't know if it helps you, but using C I would code the two calls this way: rc = THEFUNCTION (magic, inputbuffer,inputlength, NULL, NULL); Exactly backwards-the idea here is to NOT be obscure, but to have a nice, flexible, intuitive API. Having to specify null parameters or to use a macro for things is what we *don't* want to do. Haha, I can agree with that! Funny thing with Enterprise COBOL... It properly sets the high-order bit on the last parm, but supplies no way to interrogate it! So if THEFUNCTION was written in COBOL then you have to invoke it thusly: CALL 'THEFUNCTION' USING MAGIC, INPUT-BUFFER, INPUT-LENGTH, OMITTED, OMITTED RETURNING RC. (The OMITTED keyword simply passes an address of NULL.) Oy! Well, there is a little trick you use, involving defining the trailing parameters as pointers coming in by value, on the procedure division header name the pointers not the items, defining items you expect in linkage, redefining a binary item on top of the pointers, to access one of the data items use 'set addres of data_item to pointer', when you're done with an item check if the redefined (binary version) is negative - that indicates the end of list bit is on. No problem. :-) Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- Kind regards, -Steve Comstock The Trainer's Friend, Inc. 303-355-2752 http://www.trainersfriend.com * To get a good Return on your Investment, first make an investment! + Training your people is an excellent investment * Try our tool for calculating your Return On Investment for training dollars at http://www.trainersfriend.com/ROI/roi.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: PL/I with variable PLISTs (was: LE C calling HLASM)
Hmmm Have you (or anyone) actually verified that this works? I just wrote the following programs: identification division. program-id. callopt. data division. working-storage section. 77 one pic x(4) value z'one'. call 'callee' using one goback. end program callopt. id division. program-id. 'callee'. data division. local-storage section. 77 addr pointer. 77 addr-val redefines addr pic s9(9) comp-5. linkage section. 01 string-1 pic x(101). 01 string-2 pic x(101). 01 result pic s9(8) comp-5. procedure division using string-1 string-2 returning result. call 'print-string' using string-1 set addr to address of string-1 if addr-val not less than zero call 'print-string' using string-2. move zero to result goback. When I run it, according to COBOL ADDR is set to x0F0960B8. I am guessing that the high-order bit is in fact set, but that COBOL does not reveal that implementation detail to the COBOL application. Either that or I am doing something wrong. Frank - Original Message - From: Victor Gil victor@broadridge.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Wednesday, April 11, 2012 9:36 AM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) LINKAGE SECTION. 01 A-POINTER USAGE POINTER. 01 BIN-WORD REDEFINES A-POINTER COMP S9(8). ... CALL 'THEFUNCTION' USING MAGIC, INPUT-BUFFER, INPUT-LENGTH, OMITTED, OMITTED RETURNING RC. SET A-POINTER TO ADDRESS OF INPUT-LENGTH IF BIN-WORD 0 THEN the high-bit is ON Funny thing with Enterprise COBOL... It properly sets the high-order bit on the last parm, but supplies no way to interrogate it! So if THEFUNCTION was written in COBOL then you have to invoke it thusly: CALL 'THEFUNCTION' USING MAGIC, INPUT-BUFFER, INPUT-LENGTH, OMITTED, OMITTED RETURNING RC. (The OMITTED keyword simply passes an address of NULL.) Oy! Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: PL/I with variable PLISTs
Sorry, Victor's was so short and sweet I used it and assumed it was the same as yours. I'll look more carefully at yours later. Thanks! Frank - Original Message - From: Steve Comstock st...@trainersfriend.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Wednesday, April 11, 2012 12:09 PM Subject: Re: PL/I with variable PLISTs On 4/11/2012 11:38 AM, Frank Swarbrick wrote: Hmmm Have you (or anyone) actually verified that this works? I just wrote the following programs: identification division. program-id. callopt. data division. working-storage section. 77 one pic x(4) value z'one'. call 'callee' using one goback. end program callopt. id division. program-id. 'callee'. data division. local-storage section. 77 addr pointer. 77 addr-val redefines addr pic s9(9) comp-5. linkage section. 01 string-1 pic x(101). 01 string-2 pic x(101). 01 result pic s9(8) comp-5. procedure division using string-1 string-2 returning result. call 'print-string' using string-1 set addr to address of string-1 if addr-val not less than zero call 'print-string' using string-2. move zero to result goback. When I run it, according to COBOL ADDR is set to x0F0960B8. I am guessing thatthe high-order bit is in fact set, but that COBOL does not reveal that implementation detail to the COBOL application. Either that or I am doing something wrong. Frank I think Victor's example is wrong. You should follow the instructions I gave you. OK, here's a short example of a subroutine being passed a variable number of parameters: process test(sym,none) numproc(pfd) offset opt process flag(w,w) map xref(short) Identification division. program-id. cobsUB3. * Copyright (C) 1999 by Steven H. Comstock environment division. data division. working-storage section. 01 text-1. 05 pic s9(4) binary value 07. 05 pic x(07) value ' SUBCOB'. 01 text-2. 05 pic s9(4) binary value 09. 05 pic x(09) value ' Parm1 '. 01 dest pic s9(9) binary value 2. 01 fc pic x(12) value low-values. linkage section. 01 parm-1-chk pic s9(9) binary. 01 parm-2-ptr pointer. 01 parm-2-chk redefines parm-2-ptr. 02 parm-2-val pic s9(9) binary. 01 parm-3-ptr pointer. 01 parm-3-chk redefines parm-3-ptr. 02 parm-3-val pic s9(9) binary. 01 parm-4-ptr pointer. 01 parm-4-chk redefines parm-4-ptr. 02 parm-4-val pic s9(9) binary. 01 parm-1-value pic s9(9) binary. 01 parm-2-value pic s9(9) binary. 01 parm-3-value pic s9(9) binary. 01 parm-4-value pic s9(9) binary. / procedure division using by value parm-1-chk, parm-2-ptr, parm-3-ptr, parm-4-ptr. thecode. display '..In COBSUB3' display '..parm-1-chk = ' parm-1-chk set address of parm-2-value to parm-2-ptr display '..parm-2-value = ' parm-2-value if parm-2-val 0 display 'End of list' go to end-of-list else display 'Not end of list' end-if set address of parm-3-value to parm-3-ptr display '..parm-3-value = ' parm-3-value if parm-3-val 0 display 'End of list' go to end-of-list else display 'Not end of list' end-if set address of parm-4-value to parm-4-ptr display '..parm-4-value = ' parm-4-value if parm-4-val 0 display 'End of list' go to end-of-list else display 'Not end of list' end-if. end-of-list. display '..Leaving COBSUB3' goback. Play around with it. - Original Message - From: Victor Gilvictor@broadridge.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Wednesday, April 11, 2012 9:36 AM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) LINKAGE SECTION. 01 A-POINTER USAGE POINTER. 01 BIN-WORD REDEFINES A-POINTER COMP S9(8). ... CALL 'THEFUNCTION' USING MAGIC, INPUT-BUFFER, INPUT-LENGTH, OMITTED, OMITTED
Re: PL/I with variable PLISTs
That does, indeed, work. And it's also as fugly as h*ck. :-) Thanks Steve. Frank - Original Message - From: Frank Swarbrick frank.swarbr...@yahoo.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Wednesday, April 11, 2012 12:55 PM Subject: Re: PL/I with variable PLISTs Sorry, Victor's was so short and sweet I used it and assumed it was the same as yours. I'll look more carefully at yours later. Thanks! Frank - Original Message - From: Steve Comstock st...@trainersfriend.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Wednesday, April 11, 2012 12:09 PM Subject: Re: PL/I with variable PLISTs On 4/11/2012 11:38 AM, Frank Swarbrick wrote: Hmmm Have you (or anyone) actually verified that this works? I just wrote the following programs: identification division. program-id. callopt. data division. working-storage section. 77 one pic x(4) value z'one'. call 'callee' using one goback. end program callopt. id division. program-id. 'callee'. data division. local-storage section. 77 addr pointer. 77 addr-val redefines addr pic s9(9) comp-5. linkage section. 01 string-1 pic x(101). 01 string-2 pic x(101). 01 result pic s9(8) comp-5. procedure division using string-1 string-2 returning result. call 'print-string' using string-1 set addr to address of string-1 if addr-val not less than zero call 'print-string' using string-2. move zero to result goback. When I run it, according to COBOL ADDR is set to x0F0960B8. I am guessing thatthe high-order bit is in fact set, but that COBOL does not reveal that implementation detail to the COBOL application. Either that or I am doing something wrong. Frank I think Victor's example is wrong. You should follow the instructions I gave you. OK, here's a short example of a subroutine being passed a variable number of parameters: process test(sym,none) numproc(pfd) offset opt process flag(w,w) map xref(short) Identification division. program-id. cobsUB3. * Copyright (C) 1999 by Steven H. Comstock environment division. data division. working-storage section. 01 text-1. 05 pic s9(4) binary value 07. 05 pic x(07) value ' SUBCOB'. 01 text-2. 05 pic s9(4) binary value 09. 05 pic x(09) value ' Parm1 '. 01 dest pic s9(9) binary value 2. 01 fc pic x(12) value low-values. linkage section. 01 parm-1-chk pic s9(9) binary. 01 parm-2-ptr pointer. 01 parm-2-chk redefines parm-2-ptr. 02 parm-2-val pic s9(9) binary. 01 parm-3-ptr pointer. 01 parm-3-chk redefines parm-3-ptr. 02 parm-3-val pic s9(9) binary. 01 parm-4-ptr pointer. 01 parm-4-chk redefines parm-4-ptr. 02 parm-4-val pic s9(9) binary. 01 parm-1-value pic s9(9) binary. 01 parm-2-value pic s9(9) binary. 01 parm-3-value pic s9(9) binary. 01 parm-4-value pic s9(9) binary. / procedure division using by value parm-1-chk, parm-2-ptr, parm-3-ptr, parm-4-ptr. thecode. display '..In COBSUB3' display '..parm-1-chk = ' parm-1-chk set address of parm-2-value to parm-2-ptr display '..parm-2-value = ' parm-2-value if parm-2-val 0 display 'End of list' go to end-of-list else display 'Not end of list' end-if set address of parm-3-value to parm-3-ptr display '..parm-3-value = ' parm-3-value if parm-3-val 0 display 'End of list' go to end-of-list else display 'Not end of list' end-if set address of parm-4-value to parm-4-ptr display '..parm-4-value = ' parm-4-value if parm-4-val 0 display 'End of list' go to end-of-list else display 'Not end of list' end-if. end-of-list. display '..Leaving COBSUB3' goback. Play around
Re: Enterprise COBOL and XML attributes
- Original Message - From: Steve Comstock st...@trainersfriend.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Saturday, April 7, 2012 8:46 AM Subject: Re: Enterprise COBOL and XML attributes On 4/6/2012 5:29 PM, Frank Swarbrick wrote: Enterprise COBOL v4.2. First real world attempt at using XML GENERATE. Works as designed, and relatively user friendly, but not particularly flexible for real world requirements. XML GENERATE will generate no fields as attributes unless with WITH ATTRIBUTES phrase is specified. In that case it will generate attributes (rather than elements) ANYWHERE it can. I just want to make sure, before I go any further, that there is ABSOLUTELY NO WAY, using just XML GENERATE, that some fields that COULD be attributes can not be forced to be elements if the WITH ATTRIBUTES phrase is specified. For example, I cannot generate the following using XML GENERATE alone (no post-processing to modify the generated XML document): underwritingrequest crossSellOfferId12000/crossSellOfferId channelTypeWEB-IA/channelType offerCategoryConsumer/offerCategory preApprovedProds product categoryCode=CC limit=5000/ product categoryCode=CR limit=1000/ /preApprovedProds parties party dob01/01/1950/dob scoreNo725298/scoreNo income10/income housingExpense1200/housingExpense housingStatusOwns/housingStatus /party /parties /underwritingrequest As you can see, all of the elementary data items are XML elements EXCEPT for the categoryCode and limit fields under product. Current COBOL group data item: 01 underwritingrequest. 05 crossSellOfferId pic x(10). 05 channelType pic x(10). 05 preApprovedProds. 10 product. 15 categoryCode pic x(2). 15 l1mit pic 9(7). 05 parties. 10 party occurs 1 to 10 times depending on party-count indexed by p_idx. 15 dob pic 99/99/. 15 scoreNo pic 9(9). 15 income pic 9(9). 15 housingExpense pic 9(9). 15 housingStatus pic x(10). Please note that I have seen the tech note XML GENERATE should create attributes under COBOL; http://www-01.ibm.com/support/docview.wss?uid=swg21218516 All I can say is (to quote Seth Meyers and Amy Poehler): Really?!?! Since we own the process that consumes this XML document I hope I can convince them to go either all attributes or all elements, but not this little mish-mash. But I want to make sure I am not missing something SIMPLE that I can do to get what they really want. (I already have to change use field name '1imit' instead of 'limit' and then do INSPECT UWR-DOC REPLACING ALL l1mit BY limit, because LIMIT is a COBOL reserved word. Oy!) some short time later Ah hah, here's a trick. I don't love it, but I can perhaps live with it. I canspecify OCCURS 1 for any field that I want to be an element rather than an attribute: 01 underwritingrequest. 05 crossSellOfferId pic x(10) occurs 1. 05 channelType pic x(10) occurs 1. 05 preApprovedProds. 10 product. 15 categoryCode pic x(2). 15 l1mit pic 9(7). 05 parties. 10 party occurs 1 to 10 times depending on party-count indexed by p_idx. 15 dob pic 99/99/ occurs 1. 15 scoreNo pic 9(9) occurs 1. 15 income pic 9(9) occurs 1. 15 housingExpense pic 9(9) occurs 1. 15 housingStatus pic x(10) occurs 1. Funky, but it works. Of course I now have to use a subscript qualification (oran extra one, in the case of the party children. Oh well! If there's a better way I'd still like to know, but at least I got it to work. Thanks! Frank Frank, That is really cool! How did you come up with that? I'm going to add that technique to my course Enterprise COBOL: Unicode and XML Support. Is it really that cool? Rather a kludge. Discovering it was a combination of figuring out what kind of fields could not be converted to attributes (fields with occurrences), and the fact that we have a vendor XML product that also uses the occurs 1 kludge, but for a different reason. (for what I am wanting here it seemed simpler to use Enterprise COBOL XML support; plus I wanted to try it out.) Frank -- For IBM-MAIN subscribe / signoff / archive access instructions
Re: PL/I with variable PLISTs (was: LE C calling HLASM)
I only happened to learn PL/I this weekend, so take this with a grain of salt, but can't you activate THEFUNCTION with a call rather than as a function in order to be able to use LINKAGE(SYSTEM)? And then use PLIRETV() in order to get the return code? declare THEFUNCTION entry options(ASM RETCODE LINKAGE(SYSTEM)); (I think LINKAGE(SYSTEM) is redundant here.) call THEFUNCTION(one, two, three); display(pliretv()); call THEFUNCTION(one, two, three, four, five); display(pliretv()); (Not sure if the declare entry requires the parms to be declared.) Maybe you can even wrap the above into a PL/I function so that your PL/I programs can invoke it as a function. Just a WAG. Good luck! Frank - Original Message - From: Phil Smith p...@voltage.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Tuesday, April 10, 2012 9:57 AM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) Steve Comstock wrote: I'm confused here, because the title of the thread is 'C calling HLASM' and here we are talking about PL/I. Yeah, true...topic drift. Renamed. So what's really going on here that is the mystery? My guess is: you have a C function that you want to call from, in this instance, a PL/I program. Right? Right. Can you show us the definition of the C function (not the body, just the definition of parameters along with any pragma statements you might have, and compiler options relevant to calls / function references)? See below. Can you show us how you invoke the function from C, COBOL, and Assembler? That is, some sample calls or function references that work successfully, both with two arguments and four arguments (BTW: do you allow the output buffer to be specified without the last length argument? How about no output buffer but with a length? In other words, must the user specify exactly two or exactly four arguments?) The previous post had an example from COBOL; C is the same, only in C syntax. Assembler too. We validate that we got three or five arguments (note there's an initial, required argument). Finally: there are some differences in the Enterprise PL/I compiler regarding compile time options and options available for declaring functions and subroutines so I ask this: is your expectation that your customers will be running the Enterprise PL/I compiler or some earlier compiler? Here's a C prototype, with the serial numbers filed off: int THEFUNCTION( char *magic, char *inputBuffer, int *inputLength, ...) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: PL/I with variable PLISTs (was: LE C calling HLASM)
I don't know if this is relevant, but I was looking at the PL/I DL/I (IMS) interface (PLITDLI) and noticed that they actually have to pass, as the first parameter, a fullword containing the remaining number of items! Crazy! For example, in COBOL you say: call 'CBLTDLI' using ghnp, pcb-mask, i-o-area, ssa-1 ssa-2. In PL/I it looks like you'd do something like this: call PLITDLI (five, ghnp, pcb-mask, i-o-area, ssa-1 ssa-2); See here for more details: http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.ims11.doc.apg%2Fims_imsdbpliapp.htm I was pretty happy about what I learned about PL/I until I saw this. Yuck! Frank - Original Message - From: Phil Smith p...@voltage.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Tuesday, April 10, 2012 1:54 PM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) Steve Comstock wrote: Yes. But that's Assembler. I thought the called routine was C, and you were testing the parms passed in the C routine. Is that not true? Are there more layers here? Yes, there are lots of layers, it's a mixture of assembler and C, sorry. The point is, we're confident that the description of the behavior we've seen is as described (we have XDC, too, so can see some of it). it's very strange-as if nobody at IBM ever really tried to use variable plists with PL/I! -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: PL/I with variable PLISTs (was: LE C calling HLASM)
- Original Message - From: Phil Smith p...@voltage.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Tuesday, April 10, 2012 3:31 PM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) Bernd Oppolzer wrote: I don't know if it helps you, but using C I would code the two calls this way: rc = THEFUNCTION (magic, inputbuffer,inputlength, NULL, NULL); Exactly backwards-the idea here is to NOT be obscure, but to have a nice, flexible, intuitive API. Having to specify null parameters or to use a macro for things is what we *don't* want to do. Haha, I can agree with that! Funny thing with Enterprise COBOL... It properly sets the high-order bit on the last parm, but supplies no way to interrogate it! So if THEFUNCTION was written in COBOL then you have to invoke it thusly: CALL 'THEFUNCTION' USING MAGIC, INPUT-BUFFER, INPUT-LENGTH, OMITTED, OMITTED RETURNING RC. (The OMITTED keyword simply passes an address of NULL.) Oy! Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: PL/I with variable PLISTs (was: LE C calling HLASM)
Well, in the DLI interfaces the number of items passed is NOT fixed. You can pass one or more SSAs on a get call (and some others), and some calls do not require an SSA at all. Some don't even require an I-O area. Frank - Original Message - From: Bernd Oppolzer bernd.oppol...@t-online.de To: IBM-MAIN@bama.ua.edu Cc: Sent: Tuesday, April 10, 2012 4:48 PM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) I would not blame PL/1 for this. It is not OK IMHO to request the caller to set the high order bit on the last parameter, when the number of the parameters is fixed (see also my GDDM example on the other post). This is not required by any OS convention, at least that's my understanding. Kind regards Bernd Am 11.04.2012 00:19, schrieb Frank Swarbrick: I don't know if this is relevant, but I was looking at the PL/I DL/I (IMS) interface (PLITDLI) and noticed that they actually have to pass, as the first parameter, a fullword containing the remaining number of items! Crazy! For example, in COBOL you say: call 'CBLTDLI' using ghnp, pcb-mask, i-o-area, ssa-1 ssa-2. In PL/I it looks like you'd do something like this: call PLITDLI (five, ghnp, pcb-mask, i-o-area, ssa-1 ssa-2); See here for more details: http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.ims11.doc.apg%2Fims_imsdbpliapp.htm I was pretty happy about what I learned about PL/I until I saw this. Yuck! Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: PL/I with variable PLISTs (was: LE C calling HLASM)
We don't have PL/I in our shop (I downloaded an old trial version of VisualAge PL/I for Windows to play with at home), but it seems to me that one MIGHT be able to do the following for PL/I to call DL/I: declare CEETDLI entry linkage(SYSTEM); or perhaps declare CEETDLI entry(char(4), *, *, *, *, *, *, *, *, *, *) linkage(SYSTEM); Then call without passing the number of parms: call CEETDLI(ghnp, pcb-mask, i-o-area, ssa-1 ssa-2); I am assuming that LINKAGE(SYSTEM) does indeed set the high-order bit in the last parm. I used CEETDLI rather than PLITDLI because I know it can be called from any language (COBOL, PL/I, Assembler, maybe C and Fortran), so it can obviously(!) handle the high-order bit indicator. I would be vary curious to have someone with both PL/I and IMS test this out. Frank - Original Message - From: Bernd Oppolzer bernd.oppol...@t-online.de To: IBM-MAIN@bama.ua.edu Cc: Sent: Tuesday, April 10, 2012 5:31 PM Subject: Re: PL/I with variable PLISTs (was: LE C calling HLASM) Ok, this is one thing; needs probably some claryfying from IBM. But, as Frank mentioned in the other post: I think the high order bit is really needed in the PLITDLI case, because the number of parameters is not fixed and cannot be derived from the other parameters in every case (I guess, the number of SSAs is really variable on the GET request, and the high order bit on the last SSA marks the end of the list - only speculating; I know almost nothing about IMS). So we here have a design where the API relies heavily on the OS/360 high order bit mechanism. Languages that do not set the high order bit on the last parm address must prefix the address list with the parmcount, so that the DLI interface knows the number of the parameters. My opinion is: there are languages that even don't support variable length parameter lists. But you always find a way to overcome this restriction; for example: you could pass an array of SSAs as a single parameter in the case of the IMS GET request (together with a number of entries). This is what I would normally do in C - starting address of the array and number of elements, two parameters. You don't really need variable length parameter lists - they are comfortable sometimes, like with printf etc, but you can live without them. Kind regards Bernd Am 11.04.2012 01:07, schrieb Paul Gilmartin: On Wed, 11 Apr 2012 00:48:33 +0200, Bernd Oppolzer wrote: I would not blame PL/1 for this. It is not OK IMHO to request the caller to set the high order bit on the last parameter, when the number of the parameters is fixed (see also my GDDM example on the other post). This is not required by any OS convention, at least that's my understanding. It's inconsistently deprecated. In: http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2a7b0/5.1.8 5.0 ATTACH and ATTACHX -- Create a new task Subtopics: * 5.1 Description Specify VL=1 only if the called program can be passed a variable number of parameters. VL=1 causes the high-order bit of the last address to be set to 1; the bit can be checked to find the end of the list. Note the word only. But this admonition appears for ATTACH, but not for CALL. Is there any rationale for this difference, or is an RCF in order? (I haven't checked LINK nor XCTL; they're in a different volume.) -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Enterprise COBOL and XML attributes
Enterprise COBOL v4.2. First real world attempt at using XML GENERATE. Works as designed, and relatively user friendly, but not particularly flexible for real world requirements. XML GENERATE will generate no fields as attributes unless with WITH ATTRIBUTES phrase is specified. In that case it will generate attributes (rather than elements) ANYWHERE it can. I just want to make sure, before I go any further, that there is ABSOLUTELY NO WAY, using just XML GENERATE, that some fields that COULD be attributes can not be forced to be elements if the WITH ATTRIBUTES phrase is specified. For example, I cannot generate the following using XML GENERATE alone (no post-processing to modify the generated XML document): underwritingrequest crossSellOfferId12000/crossSellOfferId channelTypeWEB-IA/channelType offerCategoryConsumer/offerCategory preApprovedProds product categoryCode=CC limit=5000/ product categoryCode=CR limit=1000/ /preApprovedProds parties party dob01/01/1950/dob scoreNo725298/scoreNo income10/income housingExpense1200/housingExpense housingStatusOwns/housingStatus /party /parties /underwritingrequest As you can see, all of the elementary data items are XML elements EXCEPT for the categoryCode and limit fields under product. Current COBOL group data item: 01 underwritingrequest. 05 crossSellOfferId pic x(10). 05 channelType pic x(10). 05 preApprovedProds. 10 product. 15 categoryCode pic x(2). 15 l1mit pic 9(7). 05 parties. 10 party occurs 1 to 10 times depending on party-count indexed by p_idx. 15 dob pic 99/99/. 15 scoreNo pic 9(9). 15 income pic 9(9). 15 housingExpense pic 9(9). 15 housingStatus pic x(10). Please note that I have seen the tech note XML GENERATE should create attributes under COBOL; http://www-01.ibm.com/support/docview.wss?uid=swg21218516 All I can say is (to quote Seth Meyers and Amy Poehler): Really?!?! Since we own the process that consumes this XML document I hope I can convince them to go either all attributes or all elements, but not this little mish-mash. But I want to make sure I am not missing something SIMPLE that I can do to get what they really want. (I already have to change use field name '1imit' instead of 'limit' and then do INSPECT UWR-DOC REPLACING ALL l1mit BY limit, because LIMIT is a COBOL reserved word. Oy!) some short time later Ah hah, here's a trick. I don't love it, but I can perhaps live with it. I can specific OCCURS 1 for any field that I want to be an element rather than an attribute: 01 underwritingrequest. 05 crossSellOfferId pic x(10) occurs 1. 05 channelType pic x(10) occurs 1. 05 preApprovedProds. 10 product. 15 categoryCode pic x(2). 15 l1mit pic 9(7). 05 parties. 10 party occurs 1 to 10 times depending on party-count indexed by p_idx. 15 dob pic 99/99/ occurs 1. 15 scoreNo pic 9(9) occurs 1. 15 income pic 9(9) occurs 1. 15 housingExpense pic 9(9) occurs 1. 15 housingStatus pic x(10) occurs 1. Funky, but it works. Of course I now have to use a subscript qualification (or an extra one, in the case of the party children. Oh well! If there's a better way I'd still like to know, but at least I got it to work. Thanks! Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: VSAM help wanted for random reads
It looked good when I sent it! Let me try this... Before BLSR: - -TIMINGS (MINS.)-- -PAGING COUNTS -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP VIO SWAPS -PROC01 STEP01 00 1123K 1121K .83 .11 23.2 1599506 TSTBAT 0 0 0 0 IEF404I ICM06F - ENDED - TIME=16.43.46 -ICM06F ENDED. NAME-ICM06 TOTAL TCB CPU TIME= .83 TOTAL ELAPSED TIME= 23.2 With BLSR: CSR020I BUFSI=1024, BUFSD=20480, BUFNI=10, BUFND=256, HBUFNI=0, HBUFND=0, SHRPOOL=14. DDNAME=ICMMSTR CSR022I STRNO=16, ACB RMODE31=ALL, RMODE31=ALL. DDNAME=ICMMSTR +CSR021I ACB CONVERTED TO USE VSAM LSR. DDNAME=ICMMSTR +BMC2700 API BYPASSED -- NO PLUSIN DD PRESENT BMC - -TIMINGS (MINS.)-- -PAGING COUNTS -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP VIO SWAPS -PROC01 STEP01 00 10704 3532 .04 .00 1.1 73844 TSTBAT 0 0 0 0 IEF404I ICM06F - ENDED - TIME=16.55.07 -ICM06F ENDED. NAME-ICM06 TOTAL TCB CPU TIME= .04 TOTAL ELAPSED TIME= 1.1 If that doesn't format correctly them I am at a loss. Frank From: Ed Gould edgould1...@comcast.net To: IBM-MAIN@bama.ua.edu Sent: Tuesday, April 3, 2012 6:24 PM Subject: Re: VSAM help wanted for random reads Frank, Thanks for reporting back. One request is there somehow to paste the results so they match up with the headers ? Ed On Apr 3, 2012, at 6:33 PM, Frank Swarbrick wrote: Several good ideas given. My sysprog installed BLSR and I got very good results: Without BLSR: - -TIMINGS (MINS.)-- -PAGING COUNTS -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP VIO SWAPS -PROC01 STEP01 00 1123K 1121K .83 .11 23.2 1599506 TSTBAT 0 IEF404I ICM06F - ENDED - TIME=16.43.46 -ICM06F ENDED. NAME-ICM06 TOTAL TCB CPU TIME= .83 TOTAL ELAPSED TIME= 23.2 With BLSR: CSR020I BUFSI=1024, BUFSD=20480, BUFNI=10, BUFND=256, HBUFNI=0, HBUFND=0, SHRPOOL=14. DDNAME=ICMMSTR CSR022I STRNO=16, ACB RMODE31=ALL, RMODE31=ALL. DDNAME=ICMMSTR +CSR021I ACB CONVERTED TO USE VSAM LSR. DDNAME=ICMMSTR - -TIMINGS (MINS.)-- -PAGING COUNTS -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP VIO SWAPS -PROC01 STEP01 00 10704 3532 .04 .00 1.1 73844 TSTBAT 0 0 0 0 IEF404I ICM06F - ENDED - TIME=16.55.07 -ICM06F ENDED. NAME-ICM06 TOTAL TCB CPU TIME= .04 TOTAL ELAPSED TIME= 1.1 23.2 minutes versus 1.1 minutes. 1,123,000 EXCP versus 10,704 EXCP. BTW, to Steve Comstock, there is no AIX on this file. Just a 17 byte key where the first byte is the record type ('0' - '5') and the remaining 16 is the 'actual' key in the format appropriate for that particular record type. The idea of putting the record type at the end rather than the beginning is an interesting idea. Unless there's some way of doing that without having to change any programs I don't think we'd want to take the time. However I am interested enough to try it with this one program and see what effect it has. Thanks! Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: VSAM help wanted for random reads
That was our original thought, but since we have to open it as I-O it wouldn't work for us. Well, not without shareoptions 4. Thanks! Frank - Original Message - From: Chip Grantham cgrant...@ameritas.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Wednesday, April 4, 2012 9:37 AM Subject: Re: VSAM help wanted for random reads We have an application like this, that is multiple record types in the same KSDS. We found that if we had a FD for the type '4' records and a FD for the type '5' records (that is two DDs pointing to the same file), that each kept a separate sequence set in storage and it ran faster. You might try it. Chip Grantham | Ameritas | Sr. IT Consultant | cgrant...@ameritas.com 5900 O Street, Lincoln NE 68510 | p: 402-467-7382 | c: 402-429-3579 | f: 402-325-4030 *** This message may contain confidential information intended only for the use of the addressee(s) named above and may contain information that is legally privileged. If you are not the addressee, or the person responsible for delivering it to the addressee, you are hereby notified that reading, disseminating, distributing or copying this message is strictly prohibited. If you have received this message by mistake, please immediately notify us by replying to the message and delete the original message immediately thereafter. Thank you. *** -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: VSAM help wanted for random reads
Tested with DEFERW=YES (that is the proper syntax, by the way. Commas are optional.) It didn't gain me much, as I am only updating 32 of 61459 records, so I'm not going to worry about it at this time. With BLSR DEFERW=YES: CSR020I BUFSI=1024, BUFSD=20480, BUFNI=10, BUFND=256, HBUFNI=0, HBUFND=0, SHRPOOL=14. DDNAME=ICMMSTR CSR022I STRNO=16, ACB RMODE31=ALL, RMODE31=ALL. DDNAME=ICMMSTR +CSR021I ACB CONVERTED TO USE VSAM LSR. DDNAME=ICMMSTR - -TIMINGS (MINS.)-- -PAGING COUNTS -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP VIO SWAPS -PROC01 STEP01 00 10649 3485 .04 .00 1.2 73938 TSTBAT 0 0 0 0 IEF404I ICM06F - ENDED - TIME=09.36.39 -ICM06F ENDED. NAME-ICM06 TOTAL TCB CPU TIME= .04 TOTAL ELAPSED TIME= 1.2 STATISTICS REC-TOTAL--61459 SPLITS-CI--0 EXCPS466 REC-DELETED0 SPLITS-CA--0 EXTENTS1 REC-INSERTED---0 FREESPACE-%CI-20 SYSTEM-TIMESTAMP: REC-UPDATED---32 FREESPACE-%CA-10 X'C95EC792E74FAC04' REC-RETRIEVED--10103 FREESPC-19886080 With BLSR DEFERW=NO: CSR020I BUFSI=1024, BUFSD=20480, BUFNI=10, BUFND=256, HBUFNI=0, HBUFND=0, SHRPOOL=14. DDNAME=ICMMSTR CSR022I STRNO=16, ACB RMODE31=ALL, RMODE31=ALL. DDNAME=ICMMSTR +CSR021I ACB CONVERTED TO USE VSAM LSR. DDNAME=ICMMSTR - -TIMINGS (MINS.)-- -PAGING COUNTS -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP VIO SWAPS -PROC01 STEP01 00 10661 4459 .04 .00 1.2 74300 TSTBAT 0 0 0 0 IEF404I ICM06F - ENDED - TIME=09.53.06 -ICM06F ENDED. NAME-ICM06 TOTAL TCB CPU TIME= .04 TOTAL ELAPSED TIME= 1.2 STATISTICS REC-TOTAL--61459 SPLITS-CI--0 EXCPS471 REC-DELETED0 SPLITS-CA--0 EXTENTS1 REC-INSERTED---0 FREESPACE-%CI-20 SYSTEM-TIMESTAMP: REC-UPDATED---32 FREESPACE-%CA-10 X'C95ECB3FB8134004' REC-RETRIEVED--10103 FREESPC-19886080 I did a delete/define/repro from source for the ICMMSTR file before each run. Thanks for everyone's help! Frank - Original Message - From: Farley, Peter x23353 peter.far...@broadridge.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Wednesday, April 4, 2012 7:00 AM Subject: Re: VSAM help wanted for random reads Be very cautious using DEFERW with BLSR unless you already have a good backup of the KSDS immediately before the program starts. Recovery after a crash (program or system) will require a restore of the file, since DEFERW with a crash can leave the KSDS corrupted and sometimes unreadable, in part or in whole. BTDTGTTS. But it does speed up the update process substantially. If you decide to use it, add the measurements of both the time to take a backup just before starting the program and the program update time to compare to the non-DEFERW time. If you can allocate sufficient memory for buffers that will hold ALL of the CI's in the file, or at least all of the CI's that need an update (not always practical, of course), all of the updating will occur at CLOSE. Also note that I added a comma before the DEFERW in Ron's example. HTH Peter -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Ron Hawkins Sent: Wednesday, April 04, 2012 12:35 AM To: IBM-MAIN@bama.ua.edu Subject: Re: VSAM help wanted for random reads Frank, It is terrific that you are getting an improvement with BLSR. I suspect you are using a vanilla copy of an example in the BLSR manual similar to Peter Farley's example in his post. The problem is these parms do not get the best performance from BLSR. The missing value is DEFERW. This is explained at http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/IEA5J600/3.1.1?SH
Re: VSAM help wanted for random reads
I possibly could if I had the slightest idea how to do that. Is that something an applications developer might have access to, or only a sysprog? Thanks, Frank - Original Message - From: Martin Packer martin_pac...@uk.ibm.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Wednesday, April 4, 2012 1:34 PM Subject: Re: VSAM help wanted for random reads Not to suggest YOU should've done this but you can get useful statistics out of SMF 62 and 64 that would've told you how much write activity you had - and a lot else besides. Cheers, Martin Martin Packer, Mainframe Performance Consultant, zChampion Worldwide Banking Center of Excellence, IBM +44-7802-245-584 email: martin_pac...@uk.ibm.com Twitter / Facebook IDs: MartinPacker Blog: https://www.ibm.com/developerworks/mydeveloperworks/blogs/MartinPacker From: Frank Swarbrick frank.swarbr...@yahoo.com To: IBM-MAIN@bama.ua.edu, Date: 04/04/2012 16:59 Subject: Re: VSAM help wanted for random reads Sent by: IBM Mainframe Discussion List IBM-MAIN@bama.ua.edu Tested with DEFERW=YES (that is the proper syntax, by the way. Commas are optional.) It didn't gain me much, as I am only updating 32 of 61459 records, so I'm not going to worry about it at this time. With BLSR DEFERW=YES: CSR020I BUFSI=1024, BUFSD=20480, BUFNI=10, BUFND=256, HBUFNI=0, HBUFND=0, SHRPOOL=14. DDNAME=ICMMSTR CSR022I STRNO=16, ACB RMODE31=ALL, RMODE31=ALL. DDNAME=ICMMSTR +CSR021I ACB CONVERTED TO USE VSAM LSR. DDNAME=ICMMSTR - -TIMINGS (MINS.)-- -PAGING COUNTS -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP VIO SWAPS -PROC01 STEP01 00 10649 3485 .04 .00 1.2 73938 TSTBAT 0 0 0 0 IEF404I ICM06F - ENDED - TIME=09.36.39 -ICM06F ENDED. NAME-ICM06 TOTAL TCB CPU TIME= .04 TOTAL ELAPSED TIME= 1.2 STATISTICS REC-TOTAL--61459 SPLITS-CI--0 EXCPS466 REC-DELETED0 SPLITS-CA--0 EXTENTS1 REC-INSERTED---0 FREESPACE-%CI-20 SYSTEM-TIMESTAMP: REC-UPDATED---32 FREESPACE-%CA-10 X'C95EC792E74FAC04' REC-RETRIEVED--10103 FREESPC-19886080 With BLSR DEFERW=NO: CSR020I BUFSI=1024, BUFSD=20480, BUFNI=10, BUFND=256, HBUFNI=0, HBUFND=0, SHRPOOL=14. DDNAME=ICMMSTR CSR022I STRNO=16, ACB RMODE31=ALL, RMODE31=ALL. DDNAME=ICMMSTR +CSR021I ACB CONVERTED TO USE VSAM LSR. DDNAME=ICMMSTR - -TIMINGS (MINS.)-- -PAGING COUNTS -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP VIO SWAPS -PROC01 STEP01 00 10661 4459 .04 .00 1.2 74300 TSTBAT 0 0 0 0 IEF404I ICM06F - ENDED - TIME=09.53.06 -ICM06F ENDED. NAME-ICM06 TOTAL TCB CPU TIME= .04 TOTAL ELAPSED TIME= 1.2 STATISTICS REC-TOTAL--61459 SPLITS-CI--0 EXCPS471 REC-DELETED0 SPLITS-CA--0 EXTENTS1 REC-INSERTED---0 FREESPACE-%CI-20 SYSTEM-TIMESTAMP: REC-UPDATED---32 FREESPACE-%CA-10 X'C95ECB3FB8134004' REC-RETRIEVED--10103 FREESPC-19886080 I did a delete/define/repro from source for the ICMMSTR file before each run. Thanks for everyone's help! Frank - Original Message - From: Farley, Peter x23353 peter.far...@broadridge.com To: IBM-MAIN@bama.ua.edu Cc: Sent: Wednesday, April 4, 2012 7:00 AM Subject: Re: VSAM help wanted for random reads Be very cautious using DEFERW with BLSR unless you already have a good backup of the KSDS immediately before the program starts. Recovery after a crash (program or system) will require a restore of the file, since DEFERW with a crash can leave the KSDS corrupted and sometimes unreadable, in part or in whole. BTDTGTTS. But it does speed up the update process
VSAM help wanted for random reads
Current program does the following (in COBOL!). - Opens KSDS for I-O - Sequentially processes another file (non-VSAM). - For each record in the non-VSAM file it attempts a random (keyed) read of a record on the KSDS file. The key is, essentially, a concatenation of a record type code ('4' or '5') and an account number. If no record of type '4' is found then it tries again for the same account, but with record type '5'. If either the '4' or '5' type is found it updates it and rewrites the record (assuming the data changed). This takes about 16 minutes to run. However if the 'type 5' logic is removed, so that it only ever looks for type '4' records, it takes only about one minute. Our resident VSAM expert says it has something to do with the VSAM sequence set and the fact that only one is kept in memory at a time. Since the same sequence set doesn't appear to be able to be used for both the 'type 4' records and the 'type 5' records it's constantly going back and forth, loading the other sequence set from disk. He says on VSE (which we were up until May 2010) more than one sequence set can be in memory, but with MVS this appears to not be the case. Hopefully that reason is accurate. Is there a solution? We thought about having two COBOL FDs pointing to two DDs, where both DDs pointed to the same KSDS. This would probably(?) work, except for the fact of the update. Thanks, Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: VSAM help wanted for random reads
Interesting. I've wanted to use the SUBSYS parm, but never had cause. However we must not have BLSR installed: IEFC746I SUBSYSTEM BLSR DOES NOT EXIST I'll look further into it. Thanks, Frank From: Farley, Peter x23353 peter.far...@broadridge.com To: IBM-MAIN@bama.ua.edu Sent: Tuesday, April 3, 2012 3:33 PM Subject: Re: VSAM help wanted for random reads Frank, Try using batch local shared resources (SUBSYS=BLSR) for the file, and specify at least twice as many index buffers for it as you have levels in the KSDS. For example: //MYKSDS DD SUBSYS=(BLSR,'DDNAME=MYKSDS#','RMODE31=ALL', // 'MSG=I','BUFND=256','BUFNI=10') //MYKSDS# DD DSN=HLQ.MY.KSDS,DISP=SHR Where HLQ.MY.KSDS has 3 index levels. The BUFND counts data CI's that can be resident at the same time, adjust to suit your needs. The BUFNI is for index buffers (again CI's). Don't forget to increase REGION to account for the additional buffers in memory. Or you might try the new-fangled way, using SMB (system managed buffering). I haven't yet found that to be more helpful to performance than BLSR, but it might be worth your while to investigate it. See the JCL Reference manual for the parameters to use. HTH Peter -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Frank Swarbrick Sent: Tuesday, April 03, 2012 5:24 PM To: IBM-MAIN@bama.ua.edu Subject: VSAM help wanted for random reads Current program does the following (in COBOL!). - Opens KSDS for I-O - Sequentially processes another file (non-VSAM). - For each record in the non-VSAM file it attempts a random (keyed) read of a record on the KSDS file. The key is, essentially, a concatenation of a record type code ('4' or '5') and an account number. If no record of type '4' is found then it tries again for the same account, but with record type '5'. If either the '4' or '5' type is found it updates it and rewrites the record (assuming the data changed). This takes about 16 minutes to run. However if the 'type 5' logic is removed, so that it only ever looks for type '4' records, it takes only about one minute. Our resident VSAM expert says it has something to do with the VSAM sequence set and the fact that only one is kept in memory at a time. Since the same sequence set doesn't appear to be able to be used for both the 'type 4' records and the 'type 5' records it's constantly going back and forth, loading the other sequence set from disk. He says on VSE (which we were up until May 2010) more than one sequence set can be in memory, but with MVS this appears to not be the case. Hopefully that reason is accurate. Is there a solution? We thought about having two COBOL FDs pointing to two DDs, where both DDs pointed to the same KSDS. This would probably(?) work, except for the fact of the update. Thanks, Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN 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...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: VSAM help wanted for random reads
Should have mentioned, that is a thought we've considered. And we may end up doing. Just wanted a better way, if there is one. Frank From: Fred Hoffman fhoff...@tad.org To: IBM-MAIN@bama.ua.edu Sent: Tuesday, April 3, 2012 3:34 PM Subject: Re: VSAM help wanted for random reads Run the 4's then run the 5's. It can't be that simple. -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Frank Swarbrick Sent: Tuesday, April 03, 2012 4:24 PM To: IBM-MAIN@bama.ua.edu Subject: VSAM help wanted for random reads Current program does the following (in COBOL!). - Opens KSDS for I-O - Sequentially processes another file (non-VSAM). - For each record in the non-VSAM file it attempts a random (keyed) read of a record on the KSDS file. The key is, essentially, a concatenation of a record type code ('4' or '5') and an account number. If no record of type '4' is found then it tries again for the same account, but with record type '5'. If either the '4' or '5' type is found it updates it and rewrites the record (assuming the data changed). This takes about 16 minutes to run. However if the 'type 5' logic is removed, so that it only ever looks for type '4' records, it takes only about one minute. Our resident VSAM expert says it has something to do with the VSAM sequence set and the fact that only one is kept in memory at a time. Since the same sequence set doesn't appear to be able to be used for both the 'type 4' records and the 'type 5' records it's constantly going back and forth, loading the other sequence set from disk. He says on VSE (which we were up until May 2010) more than one sequence set can be in memory, but with MVS this appears to not be the case. Hopefully that reason is accurate. Is there a solution? We thought about having two COBOL FDs pointing to two DDs, where both DDs pointed to the same KSDS. This would probably(?) work, except for the fact of the update. Thanks, Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: VSAM help wanted for random reads
Several good ideas given. My sysprog installed BLSR and I got very good results: Without BLSR: - -TIMINGS (MINS.)-- -PAGING COUNTS -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP VIO SWAPS -PROC01 STEP01 00 1123K 1121K .83 .11 23.2 1599506 TSTBAT 0 IEF404I ICM06F - ENDED - TIME=16.43.46 -ICM06F ENDED. NAME-ICM06 TOTAL TCB CPU TIME= .83 TOTAL ELAPSED TIME= 23.2 With BLSR: CSR020I BUFSI=1024, BUFSD=20480, BUFNI=10, BUFND=256, HBUFNI=0, HBUFND=0, SHRPOOL=14. DDNAME=ICMMSTR CSR022I STRNO=16, ACB RMODE31=ALL, RMODE31=ALL. DDNAME=ICMMSTR +CSR021I ACB CONVERTED TO USE VSAM LSR. DDNAME=ICMMSTR - -TIMINGS (MINS.)-- -PAGING COUNTS -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP VIO SWAPS -PROC01 STEP01 00 10704 3532 .04 .00 1.1 73844 TSTBAT 0 0 0 0 IEF404I ICM06F - ENDED - TIME=16.55.07 -ICM06F ENDED. NAME-ICM06 TOTAL TCB CPU TIME= .04 TOTAL ELAPSED TIME= 1.1 23.2 minutes versus 1.1 minutes. 1,123,000 EXCP versus 10,704 EXCP. BTW, to Steve Comstock, there is no AIX on this file. Just a 17 byte key where the first byte is the record type ('0' - '5') and the remaining 16 is the 'actual' key in the format appropriate for that particular record type. The idea of putting the record type at the end rather than the beginning is an interesting idea. Unless there's some way of doing that without having to change any programs I don't think we'd want to take the time. However I am interested enough to try it with this one program and see what effect it has. Thanks! Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Thought: new DISP status function
Certainly interesting, I'll give you that. :-) Do you use this in production jobs? Is it clearly understood by others? It seems to work. The (,,RLSE) mentioned elsewhere is not allowed, but (1,1,RLSE) is: //ALLOC JOB ,'FILE ALLOCATIONS',NOTIFY=SYSUID //MAIN EXEC PGM=IDCAMS //ALLOC DD DSN=DVFJS.MY.FILE, // SPACE=(CYL,(10,1)), // DISP=(MOD,CATLG) //INFILE DD * THIS IS A TEST //MYFILE DD DISP=OLD,DSN=*.ALLOC, // VOL=REF=*.ALLOC, // SPACE=(1,1,RLSE), // LRECL=80,RECFM=FB //SYSPRINT DD SYSOUT=* //SYSIN DD * REPRO INFILE(INFILE) OUTFILE(MYFILE) /* Frank From: Paul Gilmartin paulgboul...@aim.com To: IBM-MAIN@bama.ua.edu Sent: Friday, February 24, 2012 8:06 PM Subject: Re: Thought: new DISP status function On Fri, 24 Feb 2012 15:48:57 -0800, Frank Swarbrick wrote: I'm not clear on what you are doing here. Are you saying this is somehow a replacement for this? //REUSE EXEC PGM=IEFBR14 //MYFILE DD DSN=MY.FILE,SPACE=(0,0),DISP=(MOD,DELETE) //MYPGM EXEC PGM=MYPGM //MYFILE DD DSN=MY.FILE,SPACE=(CYL,(100,10),RLSE),DISP=(NEW,CATLG) Yes, provided you're willing/intending to reuse the data set if it exists rather than deleting and reallocating. How would this look using your method? //MYPGM EXEC PGM=MYPGM //ALLOC DD DSN=MY.FILE,SPACE=(CYL,(100,10)),DISP=(MOD,CATLG) /* UNIT= or SMS? */ //MYFILE DD DISP=OLD,DSN=*.ALLOC,VOL=REF=*.ALLOC (From memory; not lately tested.) (I don't know how to deal with the RLSE option.) -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Thought: new DISP status function
I'm not clear on what you are doing here. Are you saying this is somehow a replacement for this? //REUSE EXEC PGM=IEFBR14 //MYFILE DD DSN=MY.FILE,SPACE=(0,0),DISP=(MOD,DELETE) //MYPGM EXEC PGM=MYPGM //MYFILE DD DSN=MY.FILE,SPACE=(CYL,(100,10),RLSE),DISP=(NEW,CATLG) How would this look using your method? Thanks, Frank From: Paul Gilmartin paulgboul...@aim.com To: IBM-MAIN@bama.ua.edu Sent: Friday, February 24, 2012 12:24 AM Subject: Re: Thought: new DISP status function On Thu, 23 Feb 2012 13:44:18 -0800, Frank Swarbrick wrote: I'd much prefer the latter, but of course have no idea how much work it would be. What is your 'driver' for wanting this feature? Mine is to eliminate the requirement of the separate IEFBR14 to do a MOD,DELETE prior to doing a NEW. Honestly have a hard time understanding how MVS has gone this long with that kludgey (IMHO) behavior, but... You don't need a separate IEFBR14 nor the overhead of DELETE and re-create. On occasion, I've done: ... //REUSE DD DISP=(MOD,CATLG),UNIT=SYSALLDA,SPACE=...,... //SYSUT2 DD DISP=OLD,DSN=*.REUSE,VOL=REF=*.REUSE ... -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Thought: new DISP status function
I like it. John: What would your expectation be if the characteristics of the existing dataset were different than those specified on the DD. SPACE and the like. Would this new parm alter the characteristics as specified on the DD, or would they say the same? Frank From: Mike Schwab mike.a.sch...@gmail.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 23, 2012 1:39 PM Subject: Re: Thought: new DISP status function DISP=REUSE or DISP=(REUSE,CATLG) in case of additional volumes. On Thu, Feb 23, 2012 at 2:28 PM, McKown, John john.mck...@healthmarkets.com wrote: We all know that you can specify DISP=OLD|SHR|NEW|MOD for a dataset. I just had another wacky thought of a new one that I would like. I can't really think of a good, three character, value for it. But what it would do is what UNIX does with a PATHOPTS=(OTRUNC,OCREAT). It would, like MOD, either reuse an existing allocation, or create a new one. But, unlike MOD, it would not add to the end, but put an EOF at the beginning of the dataset and start writing over the old data. What do others think? John McKown -- Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all? -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Thought: new DISP status function
I'd much prefer the latter, but of course have no idea how much work it would be. What is your 'driver' for wanting this feature? Mine is to eliminate the requirement of the separate IEFBR14 to do a MOD,DELETE prior to doing a NEW. Honestly have a hard time understanding how MVS has gone this long with that kludgey (IMHO) behavior, but... Frank From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 23, 2012 2:34 PM Subject: Re: Thought: new DISP status function A good question. The simpliest thing was to have the INITIATOR write an EOF to the dataset and then make the access method use MOD. This should be a minimal change. IMO, the best thing to do would be to have the initiator do a catalog lookup and scratch the dataset if it exists, then do NEW processing to redrive SMS and allocation. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets® 9151 Boulevard 26 . N. Richland Hills . TX 76010 (817) 255-3225 phone . john.mck...@healthmarkets.com . www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets® is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company®, Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Frank Swarbrick Sent: Thursday, February 23, 2012 3:30 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Thought: new DISP status function I like it. John: What would your expectation be if the characteristics of the existing dataset were different than those specified on the DD. SPACE and the like. Would this new parm alter the characteristics as specified on the DD, or would they say the same? Frank From: Mike Schwab mike.a.sch...@gmail.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 23, 2012 1:39 PM Subject: Re: Thought: new DISP status function DISP=REUSE or DISP=(REUSE,CATLG) in case of additional volumes. On Thu, Feb 23, 2012 at 2:28 PM, McKown, John john.mck...@healthmarkets.com wrote: We all know that you can specify DISP=OLD|SHR|NEW|MOD for a dataset. I just had another wacky thought of a new one that I would like. I can't really think of a good, three character, value for it. But what it would do is what UNIX does with a PATHOPTS=(OTRUNC,OCREAT). It would, like MOD, either reuse an existing allocation, or create a new one. But, unlike MOD, it would not add to the end, but put an EOF at the beginning of the dataset and start writing over the old data. What do others think? John McKown -- Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all? - - For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Thought: new DISP status function
Do you think that this new feature would be able to fulfill both needs? Frank From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 23, 2012 2:52 PM Subject: Re: Thought: new DISP status function I don't have a need. We use CA-11, which takes care of the problem of recreating existing datasets. Why I thought of it is due to my new tendency to use z/OS UNIX files instead of sequential datasets, when I intend to edit them. I use PATHOPTS=(OTRUNC,OCREAT) and it just occurred to me that it might be nice for standard sequential datasets too. I use z/OS UNIX files because I like to use programs like sed, awk, and perl for data manipulation. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets® 9151 Boulevard 26 . N. Richland Hills . TX 76010 (817) 255-3225 phone . john.mck...@healthmarkets.com . www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets® is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company®, Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Frank Swarbrick Sent: Thursday, February 23, 2012 3:44 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Thought: new DISP status function I'd much prefer the latter, but of course have no idea how much work it would be. What is your 'driver' for wanting this feature? Mine is to eliminate the requirement of the separate IEFBR14 to do a MOD,DELETE prior to doing a NEW. Honestly have a hard time understanding how MVS has gone this long with that kludgey (IMHO) behavior, but... Frank From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 23, 2012 2:34 PM Subject: Re: Thought: new DISP status function A good question. The simpliest thing was to have the INITIATOR write an EOF to the dataset and then make the access method use MOD. This should be a minimal change. IMO, the best thing to do would be to have the initiator do a catalog lookup and scratch the dataset if it exists, then do NEW processing to redrive SMS and allocation. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets® 9151 Boulevard 26 . N. Richland Hills . TX 76010 (817) 255-3225 phone . john.mck...@healthmarkets.com . www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets® is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company®, Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Frank Swarbrick Sent: Thursday, February 23, 2012 3:30 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Thought: new DISP status function I like it. John: What would your expectation be if the characteristics of the existing dataset were different than those specified on the DD. SPACE and the like. Would this new parm alter the characteristics as specified on the DD, or would they say the same? Frank From: Mike Schwab mike.a.sch...@gmail.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 23, 2012 1:39 PM Subject: Re: Thought: new DISP status function DISP=REUSE or DISP=(REUSE,CATLG) in case of additional volumes. On Thu, Feb 23, 2012 at 2:28 PM, McKown, John john.mck...@healthmarkets.com wrote: We all know that you can specify DISP=OLD|SHR|NEW|MOD for a dataset. I just had another wacky thought of a new one that I would like. I can't really think of a good, three character, value for it. But what it would do is what UNIX does with a PATHOPTS=(OTRUNC,OCREAT). It would, like MOD, either reuse an existing allocation, or create a new one. But, unlike MOD, it would not add to the end, but put an EOF at the beginning of the dataset and start writing over the old data. What do others think? John McKown -- Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all
Re: Thought: new DISP status function
OK. I guess I'm not clear on what you want. I know only what I want. :-) From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 23, 2012 3:37 PM Subject: Re: Thought: new DISP status function I don't think so. I still want some of my sequential output to be on z/OS UNIX (where I also now keep 99% of my JCL and source). The new status would not help me use UNIX tools on sequential files. Yes, I do have ways to do it. But, IMO, they have more overhead because those tools cannot read sequential datasets. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets® 9151 Boulevard 26 . N. Richland Hills . TX 76010 (817) 255-3225 phone . john.mck...@healthmarkets.com . www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets® is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company®, Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Frank Swarbrick Sent: Thursday, February 23, 2012 4:07 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Thought: new DISP status function Do you think that this new feature would be able to fulfill both needs? Frank From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 23, 2012 2:52 PM Subject: Re: Thought: new DISP status function I don't have a need. We use CA-11, which takes care of the problem of recreating existing datasets. Why I thought of it is due to my new tendency to use z/OS UNIX files instead of sequential datasets, when I intend to edit them. I use PATHOPTS=(OTRUNC,OCREAT) and it just occurred to me that it might be nice for standard sequential datasets too. I use z/OS UNIX files because I like to use programs like sed, awk, and perl for data manipulation. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets® 9151 Boulevard 26 . N. Richland Hills . TX 76010 (817) 255-3225 phone . john.mck...@healthmarkets.com . www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets® is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company®, Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Frank Swarbrick Sent: Thursday, February 23, 2012 3:44 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Thought: new DISP status function I'd much prefer the latter, but of course have no idea how much work it would be. What is your 'driver' for wanting this feature? Mine is to eliminate the requirement of the separate IEFBR14 to do a MOD,DELETE prior to doing a NEW. Honestly have a hard time understanding how MVS has gone this long with that kludgey (IMHO) behavior, but... Frank From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 23, 2012 2:34 PM Subject: Re: Thought: new DISP status function A good question. The simpliest thing was to have the INITIATOR write an EOF to the dataset and then make the access method use MOD. This should be a minimal change. IMO, the best thing to do would be to have the initiator do a catalog lookup and scratch the dataset if it exists, then do NEW processing to redrive SMS and allocation. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets® 9151 Boulevard 26 . N. Richland Hills . TX 76010 (817) 255-3225 phone . john.mck...@healthmarkets.com . www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets® is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company®, Mid-West National Life Insurance Company of TennesseeSM
Re: Archaic allocation in JCL (Was: Physical record size query)
How many transactions am I going to post today? How many on Monday. What about Tuesday after a three day weekend? What about Tuesday on a 3 day weekend 4 years from now? Each transactions is 100 bytes. We save the transactions for a year. We are a brand new bank that has not yet processed any transactions. How many megabytes should I define my transaction file? No, I'm not expecting a real answer to that question. Just trying to point out why it's hard, to say the least, to know how to size files of this type. Frank From: Edward Jaffe edja...@phoenixsoftware.com To: IBM-MAIN@bama.ua.edu Sent: Friday, February 17, 2012 7:57 AM Subject: Re: Archaic allocation in JCL (Was: Physical record size query) On 2/17/2012 6:32 AM, Steve Comstock wrote: On 2/17/2012 12:57 AM, Edward Jaffe wrote: TRKs and CYLs? Most of our allocations are in MEGs. Doesn't everyone do that these days? SPACE=(1,(5,1),RLSE),AVGREC=M Allocate in MEGs I would have thought allocations in records or thousands of records, or millions of records, e.g.: SPACE=(440,(100,5),RLSE),AVGREG=M allocate space for 100 million records of 440 bytes long. Like the folks in John McKown's shop, I have trouble dealing with space in terms of average record size and number of records. It seems overburdensome to have to worry about space at that level or detail. OTOH, I have no trouble at all knowing how many megabytes I'll need! :-) -- Edward E Jaffe Phoenix Software International, Inc 831 Parkview Drive North El Segundo, CA 90245 310-338-0400 x318 edja...@phoenixsoftware.com http://www.phoenixsoftware.com/ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Archaic allocation in JCL (Was: Physical record size query)
Variable length records? From: Scott Ford scott_j_f...@yahoo.com To: IBM-MAIN@bama.ua.edu Sent: Friday, February 17, 2012 8:59 AM Subject: Re: Archaic allocation in JCL (Was: Physical record size query) Gil, Worked with a math phd for a bunch of yrs and he preached records for allocations, not cyls or tracks. I guess everyone has an opinion... Sent from my iPad Scott Ford Senior Systems Engineer www.identityforge.com On Feb 17, 2012, at 10:41 AM, Paul Gilmartin paulgboul...@aim.com wrote: On Fri, 17 Feb 2012 09:59:13 -0500, Scott Ford wrote: Me too, never even thought of megabytes until the pc slam dunk artists came along, everyone I knew calculated their file size in tracks or cyls. As someone tod me new world orderlol I would have expected that during technology transitions with a mixture of DASD geometries in a shop, bytes or records would have been the invariant metric of data set size, therefore the most convenient. Perhaps it was just bigotry, evident in the characterization in the paragraph above: We're dinos; we don't do megabytes! But then there's volume capacity which, in megabytes, is not invariant, even for a single volume of a single given model. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Archaic allocation in JCL (Was: Physical record size query)
If that is not sarcasm than you've hopelessly lost me. Frank From: Paul Gilmartin paulgboul...@aim.com To: IBM-MAIN@bama.ua.edu Sent: Friday, February 17, 2012 3:57 PM Subject: Re: Archaic allocation in JCL (Was: Physical record size query) On Fri, 17 Feb 2012 13:46:12 -0800, Frank Swarbrick wrote: How many transactions am I going to post today? How many on Monday. What about Tuesday after a three day weekend? What about Tuesday on a 3 day weekend 4 years from now? Each transactions is 100 bytes. We save the transactions for a year. We are a brand new bank that has not yet processed any transactions. How many megabytes should I define my transaction file? No, I'm not expecting a real answer to that question. Just trying to point out why it's hard, to say the least, to know how to size files of this type. Well, that's because you're posing the question in them PFCSK megabytes. If you'd just think in cylinders like a good mainframer is supposed to, it would be simple. --- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Archaic allocation in JCL (Was: Physical record size query)
But who has the responsibility? This seems something that a system programmer, with some good analysis tools, should do. Or the system itself should be such that it can do it's own analysis. After all, is that not what computers are for? Frank From: John Gilmore johnwgilmore0...@gmail.com To: IBM-MAIN@bama.ua.edu Sent: Friday, February 17, 2012 5:21 PM Subject: Re: Archaic allocation in JCL (Was: Physical record size query) Frank Swabrick wrote: begin snippet | No, I'm not expecting a real answer to that question. | Just trying to point out why it's hard, to say the least, | to know how to size files of this type. /end snippet The question itself has not been very well formulated. No one, I hope and suppose, sizes files directly in cylinders, tracks or megabytes. These are derived quantities. One begins with record types, their individual sizes, and their expected volumes/counts. Initially one has only estimates, often poor ones, of transaction/processing volumes, but these estimates can be improved incrementally by collecting statistics of the volumes actually experienced during processing and then analyzing these data.. That this is not much done does not been that it cannot or should not be done. Adequate capacity planning and even many design decisions are impossible without the systematic collection and analysis of such information. John Gilmore, Ashland, MA 01721 - USA -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: CICS vs IMS
I do think I need to be more specific, since the answers so far aren't quite what I was looking for (though interesting). Probably because I am on the applications side, rather than the systems side, I have different concerns than most here. Anyway, here are some specific questions... 1) How does BMS compare to MFS. Power, flexibility, ease of use. 2) Does IMS TM have an API for miscellaneous functions other than just sending and receiving data? Like, does it have (or need) things that transient data queues, temp storage queues, etc. 3) Does IMS TM support VSAM, or just IMS DB and DB2? 4) All CICS transactions run inside a single address space (assuming only once CICS region, of course). I believe this to not be the case for IMS TM, but to be honest I don't really understand how IMS TM works in this regard. Is there a control region that dispatches transactions to run each in their own message processing region? 4a) Is the IMS TM (DCCTL?) control region the same region as the IMS DB (DBCTL) region, assuming you have a DB/DC configuration? Frank From: Itschak Mugzach imugz...@gmail.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 16, 2012 7:02 AM Subject: Re: CICS vs IMS Frank, From IMS/DC point of view, It works almost the same. CICS has DBCTL that perform as a limited DBRC as well as IMS/DC has the DLI DBRC address spaces. Same commands, traces etc. Is this what your question refer to ? ITschak On Thu, Feb 16, 2012 at 2:04 AM, Frank Swarbrick frank.swarbr...@yahoo.comwrote: We are a CICS shop with IMS DB (DBCTL), but I've been curious for a while about the differences between how CICS works and how IMS TM works. I couldn't find anything on the web. Anyone have a link to a good reference? Thanks, Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: CICS vs IMS
That's not just a suggestion. It's a requirement. If you compile a CICS COBOL program with DYNAM the compile and link (bind) may succeed, but the program will not execute properly under CICS. (Not sure I've actually ever tried it, but I can't imagine any other result based on the documentation.) Frank From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 16, 2012 12:56 PM Subject: Re: CICS vs IMS My suggestion is: Don't use DYNAM for compiling CICS COBOL programs. Change your coding standards from: CALL 'PGM1'. to MOVE 'PGM1' TO CALLED-PROGRAM. CALL CALLED-PROGRAM. With CALLED-PROGRAM being PIC X(8). -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of John Weber Sent: Thursday, February 16, 2012 10:48 AM To: IBM-MAIN@bama.ua.edu Subject: Re: CICS vs IMS I'm glad the DYNAM/NODYNAM has been brought up. I have a question about a CICS application. It contains sub modules using CALL. PGM1 (CALL 'PGM2') -- PGM2 (CALL 'PGM3') -- PGM3 Each module is translated/pre-processed and then compiled with DYNAM. If PGM3 is compiled/linked, then PGM1 and PGM2 must be re-linked. Can this be avoided? Thank you... John -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of McKown, John Sent: Thursday, February 16, 2012 2:01 AM To: IBM-MAIN@bama.ua.edu Subject: Re: CICS vs IMS With the current CICS and COBOL, you must compile your COBOL with NODYNAM, as I'm sure you know. static CALLs in CICS are still not supported. However, with LE, it is now supported to do dynamic CALLs in COBOL. The dynamically CALLed subroutine still needs to be defined to CICS. The CICS Language Environment run-time does a CICS LOAD of the program, then the usual BALR/BASR to actually invoke the subroutine. The problem that I have with it is that this is not the equivalent of EXEC CICS LINK. CICS does not know that you've transferred control to a different program. And so any CICS messages, such as abends, in the CALL'd program have the name of the last program that was invoked via the EXEC CICS LINK type interface, instead of the real program name. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Fred Hoffman Sent: Wednesday, February 15, 2012 9:35 PM To: IBM-MAIN@bama.ua.edu Subject: Re: CICS vs IMS They both have their +s and -s, The logging for IMS is very good. Easy to use in recovery. I thought that CICS was quicker and also had a pretty good log system. Some of it depends upon the application you are using. I'm a CICS bigot but, I'm also an IMS DBA. It's you pick and how experienced your staff is. BTW, calls in cics are frowned upon, the last time I checked. HTH, Fred From: IBM Mainframe Discussion List on behalf of Roberts, John J Sent: Wed 2/15/2012 6:30 PM To: IBM-MAIN@bama.ua.edu Subject: Re: CICS vs IMS We are a CICS shop with IMS DB (DBCTL), but I've been curious for a while about the differences between how CICS works and how IMS TM works. I couldn't find anything on the web. Anyone have a link to a good reference? Try Google for IMS DC. The IMS Transaction Manager used to be called IMS/DC (for Data Communication). It
Re: CICS vs IMS
Thanks for the information! It may be worth noting that the issue you bring up can happen as easily with CICS. Or really any situation where more than one person can read/update the same record. Frank From: Mike Schwab mike.a.sch...@gmail.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, February 16, 2012 5:28 PM Subject: Re: CICS vs IMS On Thu, Feb 16, 2012 at 11:44 AM, Frank Swarbrick frank.swarbr...@yahoo.com wrote: deleted 1) How does BMS compare to MFS. Power, flexibility, ease of use. Pretty similar. One run to create a binary map, one run to create the copybook. 2) Does IMS TM have an API for miscellaneous functions other than just sending and receiving data? Like, does it have (or need) things that transient data queues, temp storage queues, etc. If you have a save area, the call to your program includes the area. Yes, you can write to a que file for larger data storage. 3) Does IMS TM support VSAM, or just IMS DB and DB2? I think you have to create a fake IMS DB definition that reads a native VSAM file. 4) All CICS transactions run inside a single address space (assuming only once CICS region, of course). I believe this to not be the case for IMS TM, but to be honest I don't really understand how IMS TM works in this regard. Is there a control region that dispatches transactions to run each in their own message processing region? 4a) Is the IMS TM (DCCTL?) control region the same region as the IMS DB (DBCTL) region, assuming you have a DB/DC configuration? Frank You can define a region to contain just databases, or just transactions, or both. In addition, you can have Batch message programs that can process a file and update your live database while online transactions continue. One problem I have run into is multiple online updates to one or more related records. We solved this by putting a timestamp in the record. When you did an inquiry with a potential to update, you put the timestamp in MDT hidden fields on the screen. Then when you went to update, if the time stamp does not match, reject the updated because database had been updated. Without the timestamp, you could open 2 TN3270 session on one PC, browse to the same record(s) in both session, then change the text on both screens. When you press enter on the first screen, those changes were applied, then the enter on the other screen would change the records (resulting in overlaid text and bad keys), after the time stamp it was rejected and the screen was refreshed with the new database records. -- Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all? -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
CICS vs IMS
We are a CICS shop with IMS DB (DBCTL), but I've been curious for a while about the differences between how CICS works and how IMS TM works. I couldn't find anything on the web. Anyone have a link to a good reference? Thanks, Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Archaic allocation in JCL (Was: Physical record size query)
Are you sure you are a mainframer? From: Thomas Berg thomas.b...@swedbank.se To: IBM-MAIN@bama.ua.edu Sent: Monday, February 13, 2012 4:27 AM Subject: Archaic allocation in JCL (Was: Physical record size query) I can't understand why we STILL need to specify SPACE= (etc) for an allocation of a dataset. You normally don't do that in other OS (platforms), You always (both principally and in practice) want to allocate as much as is needed during execution If for backward compatibility it can't be done automatically, why not introduce a new keyword like e g SPACE=ANY ? Regards, Thomas Berg _ Thomas Berg Specialist A M SWEDBANK -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Archaic allocation in JCL (Was: Physical record size query)
We do this. And while it somewhat simplifies things, it doesn't eliminate the requirement of determining how much storage is required. It just moves it, and gives a set of sizes, rather than infinite granularity. We have the following SMS data classes: DATACLAS AVGREC PRIMARY SECONDARY VOLUMES JUMBO M 3000 1500 9 LARGE M 1000 500 9 MEDIUM M 100 50 9 SMALL M 10 5 9 TINY K 1024 512 9 MINI K 20 20 9 NULL - 0 0 1 (On further reflection TINY and MINI should be reversed, but it was too late by the time we noticed.) Is this the best? No idea. But it's what we did. Of course we probably have a huge number of files that specify LARGE when they could be MEDIUM or less... Frank From: Lizette Koehler stars...@mindspring.com To: IBM-MAIN@bama.ua.edu Sent: Monday, February 13, 2012 4:42 AM Subject: Re: Archaic allocation in JCL (Was: Physical record size query) I can't understand why we STILL need to specify SPACE= (etc) for an allocation of a dataset. You normally don't do that in other OS (platforms), You always (both principally and in practice) want to allocate as much as is needed during execution If for backward compatibility it can't be done automatically, why not introduce a new keyword like e g SPACE=ANY ? Thomas, IIRC - if you force a DATACLAS on a dataset in SMS, you can specify the Space requirements there. Then the JCL does not require Space. Have you looked at that? However, then that makes your storage admin responsible for ensuring the space is enough. And if needed alter the dataclass if there are space issues. And it would require all such datasets be SMS managed. Lizette -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Archaic allocation in JCL (Was: Physical record size query)
If you specify a default data class in this manner does this negate the requirement for both SPACE and DATACLAS? Sounds good to me! Frank From: Vernooij, CP - SPLXM kees.verno...@klm.com To: IBM-MAIN@bama.ua.edu Sent: Monday, February 13, 2012 6:43 AM Subject: Re: Archaic allocation in JCL (Was: Physical record size query) Thomas Berg thomas.b...@swedbank.se wrote in message news:a90e503c23f97441b05ee302853b0e6263ff850...@fspas01ev010.fspa.myntet.se... -Ursprungligt meddelande- Från: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] För Vernooij, CP - SPLXM Skickat: den 13 februari 2012 14:22 Till: IBM-MAIN@bama.ua.edu Ämne: Re: Archaic allocation in JCL (Was: Physical record size query) Thomas Berg thomas.b...@swedbank.se wrote in message news:a90e503c23f97441b05ee302853b0e6263ff850...@fspas01ev010.fspa.myntet. se... -Ursprungligt meddelande- Från: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] För Lizette Koehler Skickat: den 13 februari 2012 12:43 Till: IBM-MAIN@bama.ua.edu Ämne: Re: Archaic allocation in JCL (Was: Physical record size query) I can't understand why we STILL need to specify SPACE= (etc) for an allocation of a dataset. You normally don't do that in other OS (platforms), You always (both principally and in practice) want to allocate as much as is needed during execution If for backward compatibility it can't be done automatically, why not introduce a new keyword like e g SPACE=ANY ? Thomas, IIRC - if you force a DATACLAS on a dataset in SMS, you can specify the Space requirements there. Then the JCL does not require Space. Have you looked at that? However, then that makes your storage admin responsible for ensuring the space is enough. And if needed alter the dataclass if there are space issues. And it would require all such datasets be SMS managed. Lizette Hi Lizette, In practice it's not a viable alternative. Besides the need (if doing it that way) to communicate frequently with the space gang, it's to many variants of datasetnames and to many different needs for space depending on time, date and subgrouping within applications. Regards, Thomas Berg Now I don't understand: if you have so many different space needs, how do you assume 'SPACE=ANY' to solve this? With SPACE=ANY, the needed space is allocated and extended during the execution. So You don't do any preallocation of a specified amount of space. Regards, Thomas Berg Consider how that is to be administrated during the execution of a job: if you do it like PCs, your dasd is formatted in small fixed chunks of space and each time you need more, you take another chunk. Suppose a chunk is 1 track: when a dataset is being filled, it will create hundreds/thousands/millions of chunks. This requires a completely new administration in DCB/DEB's and in VTOC DSCBs. Or do you introduce a new file- and diskformat: FAT/NTFS/ZFS(oh no, this exists),ZOSFS? On the same disks or on newly formatted disks? It brings a truckload of consequences to implement. A simple variant would be: assign a default Dataclas, with a large amount of space, enough for 90% of your needs and release overallocated space at Close. This can all now already be done simply with Dataclass and Managementclass. Kees. Kees. For information, services and offers, please visit our web site: http://www.klm.com. This e-mail and any attachment may contain confidential and privileged material intended for the addressee only. If you are not the addressee, you are notified that no part of the e-mail or any attachment may be disclosed, copied or distributed, and that any other action related to this e-mail or attachment is strictly prohibited, and may be unlawful. If you have received this e-mail by error, please notify the sender immediately by return e-mail, and delete this message. Koninklijke Luchtvaart Maatschappij NV (KLM), its subsidiaries and/or its employees shall not be liable for the incorrect or incomplete transmission of this e-mail or any attachments, nor responsible for any delay in receipt. Koninklijke Luchtvaart Maatschappij N.V. (also known as KLM Royal Dutch Airlines) is registered in Amstelveen, The Netherlands, with registered number 33014286 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to
Re: Archaic allocation in JCL (Was: Physical record size query)
I am having a hard time seeing this type of rationality put forth. It's throwing me for a loop. It's been a peeve of mine since I started on mainframes 15+ years ago. I'm used to hearing it's your application; you figure out how much space it will require, both now and 10 years down the line. Never been by idea of a good use of my time. Frank From: Chris Craddock crashlu...@gmail.com To: IBM-MAIN@bama.ua.edu Sent: Monday, February 13, 2012 8:19 AM Subject: Re: Archaic allocation in JCL (Was: Physical record size query) On Mon, Feb 13, 2012 at 8:56 AM, Paul Gilmartin paulgboul...@aim.comwrote: On Mon, 13 Feb 2012 07:21:11 -0600, McKown, John wrote: Or, as the programmers at our shop would do: SPACE=EAT-EVERYTHING-IN-SIGHT-AND-CAUSE-OTHER-JOBS-TO-ABEND-BECAUSE-MY-STUFF-IS-IMPORTANT-AND-YOUR-STUFF-ISNT. In many other systems, such as Winblows, everybody gets their own personal space. And if it is used up, it doesn't impact others. z/OS shares DASD space. ... The z/OS cultural norm for HFS and zFS is to give each user a dedicated filesystem for HOME. This is similar to the behavior of personal instances of those other systems. I think it is fair to say that JCL and space management are areas where z/OS truly is archaic. The other world manages to get by just fine without having to figure out how much resource to give. There's no reason z/OS couldn't do the same other than slavish adherence to legacy. IMHO it is about time the system itself took care answering its own incessant how big?, how many?, how often? questions. It's 2012 ferpetesakes. I'm all in favor of making sure that existing applications continue to work. I am far less impressed with continuing to impose 1960s thinking on new ones. -- This email might be from the artist formerly known as CC (or not) You be the judge. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: PDSE
Might it be nice to have something other than the LNKLST that behaves as sort of a global JOBLIB? I'm specifically referring to for batch jobs, but I imagine it would be useful for TSO as well. In this could be specified those libraries that don't need much of what LNKLST provides (don't ask me what it provides; I'm just an applications developer), but do need a way to apply globally to any job that is running. I imagine something similar to the PROCLIB parm of JES2's JOBCLASS statement. An example: JOBCLASS(?) PROCLIB=00, LOADLIB=00 PROCLIB(PROC00) DD(1)=(DSNAME=SYS2.SYSNAME..PROCLIB), DD(2)=(DSNAME=SYS2.ZOSRLVL..PROCLIB), DD(3)=(DSNAME=SYS1.IBM.PROCLIB), DD(4)=(DSNAME=SYS2.ZOSRLVL..COMPILE.PROCLIB), DD(5)=(DSNAME=SYS3.PROCLIB), DD(6)=(DSNAME=SYS2.PROCLIB), DD(7)=(DSNAME=SYS6.IMD1.PROCLIB), DD(8)=(DSNAME=PGMR.TOOLSLIB.PROC),UNCOND LOADLIB(LOAD00) DD(1)=(DSNAME= ... etc ...) Perhaps different job classes would/could have different PROCLIBs and different LOADLIBs, depending on what applications you run in each class. Probably would be useful to be able to specify more than one set of dynamic DD's as well: JOBCLASS(Q) LOADLIB=(01,00) /* LOAD01 ahead of LOAD00 */ LOADLIB(LOAD00) DD(1)=(DSNAME= ... etc ...) LOADLIB(LOAD01) DD(1)=(DSNAME= ... etc ...) I would imagine, further, that with this in place a JCL JOBLIB/STEPLIB statement could have an option to either override the class level JOBLIB or to simply concatenate the JCL DD's ahead of the class level DD's. Not knowing things at the system level, it seems workable to me. But I'm sure I'll hear lots of reasons why its a bad idea. So go for it. Frank From: Juergen Keller juergen.kel...@deutsche-boerse.com To: IBM-MAIN@bama.ua.edu Sent: Wednesday, January 25, 2012 1:51 AM Subject: Re: PDSE Hello all, thank you for your updates and hints. Lets bring the discussion to an end ... The problem started when we began to install z/OS 1.12 and my colleagues did not want me to use dynamic steplib in the future (that was another post some month ago). So we decided to bring this load library to LNKLST. This worked fine for some weeks. No we wanted to install some maintenance to this library and this did not work as expected. The library is PDSE and from the posts I learned that we should not do what I wanted to do. So finally we decided to remove it from LNKLST and define it as a STEPLIB to the logon-procedure. That solves all the problems with lnklst and makes it much more easier to install maintenance. Bringing a dataset to LNKLST has nothing to do with chic or something else. Its just a way to make lmods available for users in an easy way. All the following problems when its PDSE and in LNKLST and you want to add/change lmods where not expected and I was a little bit surprised. By the way ... I'm not a z/OS-sysprog - only responsible for non-z/OS-software. So I was not aware of all the restrictions z/OS has. But I know that (I think) a lot of sysprogs do what they should not do. Yes I understand Peter and Jim and some others who say what I should not do, whats on my own risk and whats not supported and and and I know some of these problems more than 30 years and since that time there is no useable supported solution from IBM. But that's another discussion. Finally ... this PDSE-library was moved to logon-procedure and removed from LNKLST and all works fine and we have to live with all the secondary effects. regards Juergen -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: removing nulls from a file
Good luck! Depending on a user to remember to do something special is fraught with hazards. But ya gots to do what ya gots to do. :-) From: Wissink, Brad [ITSYS] bjwi...@iastate.edu To: IBM-MAIN@bama.ua.edu Sent: Thursday, December 29, 2011 3:05 PM Subject: Re: removing nulls from a file The first two bytes are 'FF FE'. I tried saving it with UTF-8 and it removed all the nulls and looks correct now. Now just need to talk to the client to do this when they save the file. Thanks for all the help. Brad Wissink Information Technology Services Iowa State University 515-294-3088 -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of zMan Sent: Thursday, December 29, 2011 1:48 PM To: IBM-MAIN@bama.ua.edu Subject: Re: removing nulls from a file On Thu, Dec 29, 2011 at 1:18 PM, Frank Swarbrick frank.swarbr...@yahoo.com wrote: I agree, it looks like the original file is encoded in small-endian UTF-16. If the file is generated on a Windows system and there's no way to change the creating software to use UTF-8 or an ASCII code page (I'm betting there is, if one looks hard enough) you can probably use Windows Notepad to convert it. Just open it in Notepad, so a Save As and change the Encoding from Unicode (which is UTF-16) to ANSI. But in the end, it really should be up to the system that creates the file to have an ANSI/ASCII option... I've seen this a lot from Microsoft stuff -- export a Registry key, for example, and look at it on Windows and you'll see this. I suspect the encoding is the right answer. -- zMan -- I've got a mainframe and I'm not afraid to use it -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: removing nulls from a file
I agree, it looks like the original file is encoded in small-endian UTF-16. If the file is generated on a Windows system and there's no way to change the creating software to use UTF-8 or an ASCII code page (I'm betting there is, if one looks hard enough) you can probably use Windows Notepad to convert it. Just open it in Notepad, so a Save As and change the Encoding from Unicode (which is UTF-16) to ANSI. But in the end, it really should be up to the system that creates the file to have an ANSI/ASCII option... Frank From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Sent: Thursday, December 29, 2011 10:17 AM Subject: Re: removing nulls from a file Sounds like the original file is UTF-16. The simpliest thing is to convert it to UTF-8 before transferring. But I know that many clients are not knowledgable enough to do this. If you transfer this into a UNIX file on z/OS, then it is rather simple. Use the 'tr' command. tr -d '\000' input.file output.file If in a z/OS dataset, you might want to try: cp -T //'HLQ.INPUT.FILE' /dev/fd1 |\ tr -d '/000' |\ cp -T /dev/fd0 //'HLQ.OUTPUT.FILE' I would preallocate the output file to establish the DCB and space parameters. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Brad Wissink Sent: Thursday, December 29, 2011 9:20 AM To: IBM-MAIN@bama.ua.edu Subject: removing nulls from a file We have a client that is trying to transfer us a file and it is loaded with nulls. They say that is the way it comes from the purchased software they have on their workstation. The file has a null character inserted after every character so it looks like this 1 12/29/2011 becomes F1004000F100F2006100F200F9006100F200F000F100F100... Has anyone seen anything like this before? Is there a quick and easy way to remove all the nulls? -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: TSO concern - sysplex multisystem logon.
Argh. Why *wouldn't* you want to edit a file using FileAid in TSO. That's what it's for! If it can't handle doing what it is built to do then perhaps there is something wrong with the tool. How does disallowing concurrent logons force one to not do this? Or is it just punishment? If you promise not to do that any more I'll allow you to access more than one system concurrently. If it's (the FileAid issue) really an issue shouldn't management deal with the actual issue directly, rather than do some weird, seemingly unrelated technical workaround? If someone tried to restrict me from accessing production and development systems concurrently I'd throw a fit. Honestly, your job sounds like a nightmare! Signed, A Programmer From: McKown, John john.mck...@healthmarkets.com To: IBM-MAIN@bama.ua.edu Sent: Wednesday, December 21, 2011 10:41 AM Subject: Re: TSO concern - sysplex multisystem logon. snip Curious as to why you wish to prevent it. If they can arbitrarily choose to logon to any system, why prevent concurrent logons? -- Binyamin Dissen bdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Because my boss said so. He didn't say why. I don't argue any more. We are CPU poor and our programmer's generally are gluttons. They use FileAid in TSO to edit and change __HUGE__ datasets, rather than write an ICETOOL batch job. They do it over, and over, and over. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN
Re: Java apps have most flaws, Cobol is cleanest.
Sorry, Steve, I was referring not to dynamic allocation using outside services (LE or CICS), but rather the fact that (Enterprise) COBOL doesn't natively support dynamic (memory) allocation. Frank From: Steve Comstock st...@trainersfriend.com To: IBM-MAIN@bama.ua.edu Sent: Friday, December 9, 2011 5:00 PM Subject: Re: Java apps have most flaws, Cobol is cleanest. On 12/9/2011 4:48 PM, Frank Swarbrick wrote: Kind of a non sequitur. COBOL programs (I am a COBOL programmer) do little in the way of dynamic allocation, thus no GC required. (Not that I wouldn't like some dynamic allocation in COBOL...) Frank It's there for you to use: http://www.trainersfriend.com/Language_Environment_courses/m512descr.htm http://www.trainersfriend.com/COBOL_Courses/d704descr.htm http://www.trainersfriend.com/COBOL_Courses/D725descrpt.htm -- Kind regards, -Steve Comstock The Trainer's Friend, Inc. 303-355-2752 http://www.trainersfriend.com * To get a good Return on your Investment, first make an investment! + Training your people is an excellent investment * Try our tool for calculating your Return On Investment for training dollars at http://www.trainersfriend.com/ROI/roi.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Java apps have most flaws, Cobol is cleanest.
ALLOCATE and FREE are part of the 2002 COBOL international standard (ISO/IEC 1989:2002); a standard which IBM has made no commitment to implement... While certainly useful if you would like to build linked lists, I personally would much prefer dynamic-length tables and dynamic-length strings. Frank From: John Gilmore johnwgilmore0...@gmail.com To: IBM-MAIN@bama.ua.edu Sent: Monday, December 12, 2011 1:26 PM Subject: Re: Java apps have most flaws, Cobol is cleanest. Automatic, LIFO dynamic storage IS readily available in PL/I in the form of local storage. In my experience it is not much used because misunderstood: people who attempted, uninstructed, to use it early on were dismayed when they discovered that successive subroutine calls did not leave it in its last-used state. Based, non-LIFO dynamic storage that does persist in last-used state is available in COBOL only via LE calls. (As I mentioned in another post these services are easy to rename perspicuously.) This situation may change. IBM would object, strongly and correctly, to the notion that there is some sort of implicit promise embedded in its choices, but it is interesting to note that among the keywords not yet used in Enterprise COBOL but reserved for possible future use are two, ALLOCATE and FREE, that are suggestive, at least to anyone who knows PL/I. John Gilmore, Ashland, MA 01721 - USA -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Java apps have most flaws, Cobol is cleanest.
Kind of a non sequitur. COBOL programs (I am a COBOL programmer) do little in the way of dynamic allocation, thus no GC required. (Not that I wouldn't like some dynamic allocation in COBOL...) Frank From: Barry Merrill ba...@mxg.com To: IBM-MAIN@bama.ua.edu Sent: Friday, December 9, 2011 8:29 AM Subject: Re: Java apps have most flaws, Cobol is cleanest. A couple of years ago at SHARE, in a mostly-Java-folks session, I asked the IBM speaker why Java architected Garbage Collection (which I first encountered in Basic on my TRS-80, when a ham radio logging program stopped for 6 minutes in the middle of a contest), and his reply was that that was done because Java programmers didn't know how much memory their program needed, so I asked if that meant that COBOL programmers were smarter than Java programmers. Barry -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Sambataro, Anthony (NIH/NBS) [E] Sent: Friday, December 09, 2011 6:34 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Java apps have most flaws, Cobol is cleanest. I'm unclear as to whether the COBOL code had fewer errors or cost less to fix each problem, or both? -Original Message- From: Ian [mailto:pcs...@gmail.com] Sent: Thursday, December 08, 2011 4:53 PM To: IBM-MAIN@bama.ua.edu Subject: Java apps have most flaws, Cobol is cleanest. Interesting article on clean code study. COBOL scored the highest on security while .NET scored the lowest. Link to Computer world news article: http://www.computerworlduk.com/news/applications/3323819/java-apps-have-most -flaws-cobol-apps-least-study-finds/ (If the link does not fold right, follow the links from here: http://www.cicsworld.com/node/4252) Ian http://www.cicsworld.com -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
DFSORT JOINKEYS question
Can DFSORT be used to do the following? File 1 contains all records to be placed in the output. File 2 contains only some records with the same key. If the record is in file 2, then the output record should contain information from two fields in file 2. Otherwise the output record should contain information from two fields in file 1. The output record will also contain two fields always pulled from file 1 (even though the same fields also exist on file 2). Since examples are always better, see below. CHFIN is file 1 CHSIN is file 2 Matching is done on CHR-PAN-ACCOUNT. Each output record needs to always contain CHR-PIC-CNT and CHR-ISSUE-CNT from CHFIN (file 1). If there is a corresponding record on CHSIN (file 2) then we want to use CHS-CNT-DATE and CHS-FEE-BILL-AMT from CHSIN. Otherwise we want to use CHR-CNT-DATE and CHR-FEE-BILL-AMT from CHSIN. Oh, and to make it more fun, CHR-PIC-CNT, CHR-FEE-BILL-AMT and CHR-FEE-BILL-AMT are all 1 byte smaller than their counterparts CHS-PIC-CNT, CHS-FEE-BILL-AMT and CHS-FEE-BILL-AMT. //JKEYCHR JOB NOTIFY=SYSUID //*-- //SORT1 EXEC PGM=SORT //CHFIN DD DISP=SHR,DSN=DVFJS.CVSC.CVSCHF //CHSIN DD DISP=SHR,DSN=DEVA.CVSC.CHS //CHSOUT DD DISP=SHR,DSN=DEVC.CVSC.CHS //SYSIN DD * * Control statements for JOINKEYS application JOINKEYS F1=CHFIN,FIELDS=(CHR-PAN-ACCOUNT,A),SORTED,NOSEQCK JOINKEYS F2=CHSIN,FIELDS=(CHS-PAN-ACCOUNT,A),SORTED,NOSEQCK JOIN UNPAIRED,F1 REFORMAT FIELDS=(F1:CHR-PAN-ACCOUNT,CHR-CNT-DATE, CHR-PIC-CNT,CHR-ISSUE-CNT, F2:CHS-FEE-BILL-AMT) * Control statements for main task (joined records) OPTION COPY OUTFIL FNAMES=CHSOUT,FTOV OUTREC BUILD=(OUT-PAN-ACCOUNT, OUT-CNT-DATE, OUT-PIC-CNT,TO=PD,LENGTH=2, OUT-ISSUE-CNT,TO=PD,LENGTH=2, OUT-FEE-BILL-AMT) //SYSOUT DD SYSOUT=* //SYMNAMES DD * CHR-PAN-ACCOUNT,6,19,CH CHR-PIC-CNT,1223,1,PD CHR-ISSUE-CNT,1224,1,PD CHR-CNT-DATE,1228,3,PD CHR-FEE-BILL-AMT,1234,2,PD CHS-PAN-ACCOUNT,1,19,CH CHS-CNT-DATE,20,3,PD CHS-PIC-CNT,23,2,PD CHS-ISSUE-CNT,25,2,PD CHS-FEE-BILL-AMT,27,3,PD OUT-PAN-ACCOUNT,1,19,CH OUT-CNT-DATE,20,3,PD OUT-PIC-CNT,23,1,PD OUT-ISSUE-CNT,24,1,PD OUT-FEE-BILL-AMT,25,3,PD //SYMNOUT DD SYSOUT=* Probably I'll just end up restoring to writing a COBOL program, but doing it with DFSORT would be pretty cool! Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: DFSORT JOINKEYS question
Very cool. I obviously had no understanding of what the ? option was really to be used for. :-) Now I have the following, that at a glance appears to be working //SYMNAMES DD * CHR-PAN-ACCOUNT,6,19,CH CHR-PIC-CNT,1223,1,PD CHR-ISSUE-CNT,1224,1,PD CHR-CNT-DATE,1228,3,PD CHR-FEE-BILL-AMT,1234,2,PD CHS-PAN-ACCOUNT,1,19,CH CHS-CNT-DATE,20,3,PD CHS-PIC-CNT,23,2,PD CHS-ISSUE-CNT,25,2,PD CHS-FEE-BILL-AMT,27,3,PD INT-CHR-PAN-ACCOUNT,1,19,CH INT-CHR-CNT-DATE,*,3,PD INT-CHR-PIC-CNT,*,2,PD INT-CHR-ISSUE-CNT,*,2,PD INT-CHR-FEE-BILL-AMT,*,3,PD INT-CHS-CNT-DATE,*,3,PD INT-CHS-FEE-BILL-AMT,*,3,PD INT-FLAG,*,1,CH //JNF1CNTL DD * INREC BUILD=(CHR-PAN-ACCOUNT,CHR-CNT-DATE, CHR-PIC-CNT,TO=PD,LENGTH=2, CHR-ISSUE-CNT,TO=PD,LENGTH=2, CHR-FEE-BILL-AMT,TO=PD,LENGTH=3) //SYSIN DD * * Control statements for JOINKEYS application JOINKEYS F1=CHFIN,FIELDS=(CHS-PAN-ACCOUNT,A),SORTED,NOSEQCK JOINKEYS F2=CHSIN,FIELDS=(CHS-PAN-ACCOUNT,A),SORTED,NOSEQCK JOIN UNPAIRED,F1 REFORMAT FIELDS=(F1:CHS-PAN-ACCOUNT,CHS-CNT-DATE, CHS-PIC-CNT,CHS-ISSUE-CNT,CHS-FEE-BILL-AMT, F2:CHS-CNT-DATE,CHS-FEE-BILL-AMT,?) * Control statements for main task (joined records) OPTION COPY OUTREC IFTHEN=(WHEN=(INT-FLAG,EQ,C'1'), BUILD=(INT-CHR-PAN-ACCOUNT, INT-CHR-CNT-DATE, INT-CHR-PIC-CNT, INT-CHR-ISSUE-CNT, INT-CHR-FEE-BILL-AMT)), IFTHEN=(WHEN=(INT-FLAG,EQ,C'B'), BUILD=(INT-CHR-PAN-ACCOUNT, INT-CHS-CNT-DATE, INT-CHR-PIC-CNT, INT-CHR-ISSUE-CNT, INT-CHS-FEE-BILL-AMT)), IFOUTLEN=29 OUTFIL FNAMES=CHSOUT,FTOV I added a JNF1CNTL to reformat the input records into the same format as file 2 and the output records, rather than doing it inside both IFTHEN/WHENs. I also had to add an IFOUTLEN so that the output record was not padded with spaces to make up for the two fields that were not part of the output record. Great! I had a feeling that an IFTHEN/WHEN was required, but I was looking to put if on the REFORMAT statement, and it wasn't allowed. Didn't occur to me to put it on an OUTREC, but now it seems obvious. :-) Thanks! Frank From: Frank Yaeger yae...@us.ibm.com To: IBM-MAIN@bama.ua.edu Sent: Monday, December 5, 2011 2:52 PM Subject: Re: DFSORT JOINKEYS question Frank Swarbuck on IBM Mainframe Discussion List IBM-MAIN@bama.ua.edu wrote on 12/05/2011 11:43:27 AM: Can DFSORT be used to do the following? ... Frank, If I understand correctly what you want to do, you can use a DFSORT JOINKEYS job like the following to do it. Note the use of ? in REFORMAT as an indicator. //SORT1 EXEC PGM=SORT //SYMNAMES DD * CHR-PAN-ACCOUNT,6,19,CH CHR-PIC-CNT,1223,1,PD CHR-ISSUE-CNT,1224,1,PD CHR-CNT-DATE,1228,3,PD CHR-FEE-BILL-AMT,1234,2,PD CHS-PAN-ACCOUNT,1,19,CH CHS-CNT-DATE,20,3,PD CHS-PIC-CNT,23,2,PD CHS-ISSUE-CNT,25,2,PD CHS-FEE-BILL-AMT,27,3,PD INT-CHR-PAN-ACCOUNT,1,19,CH INT-CHR-CNT-DATE,*,3,PD INT-CHR-PIC-CNT,*,1,PD INT-CHR-ISSUE-CNT,*,1,PD INT-CHR-FEE-BILL-AMT,*,2,PD INT-CHS-CNT-DATE,*,3,PD INT-CHS-FEE-BILL-AMT,*,3,PD INT-FLAG,*,1,CH //SYMNOUT DD SYSOUT=* //CHFIN DD DISP=SHR,DSN=DVFJS.CVSC.CVSCHF //CHSIN DD DISP=SHR,DSN=DEVA.CVSC.CHS //CHSOUT DD DISP=SHR,DSN=DEVC.CVSC.CHS //SYSIN DD * * CONTROL STATEMENTS FOR JOINKEYS APPLICATION JOINKEYS F1=CHFIN,FIELDS=(CHR-PAN-ACCOUNT,A),SORTED,NOSEQCK JOINKEYS F2=CHSIN,FIELDS=(CHS-PAN-ACCOUNT,A),SORTED,NOSEQCK JOIN UNPAIRED,F1 REFORMAT FIELDS=(F1:CHR-PAN-ACCOUNT,CHR-CNT-DATE, CHR-PIC-CNT,CHR-ISSUE-CNT,CHR-FEE-BILL-AMT, F2:CHS-CNT-DATE,CHS-FEE-BILL-AMT,?) * CONTROL STATEMENTS FOR MAIN TASK (JOINED RECORDS) OPTION COPY OUTREC IFTHEN=(WHEN=(INT-FLAG,EQ,C'1'), BUILD=(INT-CHR-PAN-ACCOUNT, INT-CHR-CNT-DATE, INT-CHR-PIC-CNT,TO=PD,LENGTH=2, INT-CHR-ISSUE-CNT,TO=PD,LENGTH=2, INT-CHR-FEE-BILL-AMT,TO=PD,LENGTH=3)), IFTHEN=(WHEN=(INT-FLAG,EQ,C'B'), BUILD=(INT-CHR-PAN-ACCOUNT, INT-CHS-CNT-DATE, INT-CHR-PIC-CNT,TO=PD,LENGTH=2, INT-CHR-ISSUE-CNT,TO=PD,LENGTH=2, INT-CHS-FEE-BILL-AMT,TO=PD,LENGTH=3)) OUTFIL FNAMES=CHSOUT,FTOV /* Frank Yaeger -
Re: SETTING CONDITION CODE
Sounds good to me. Are you going to propose it? From: Paul Gilmartin paulgboul...@aim.com To: IBM-MAIN@bama.ua.edu Sent: Monday, November 28, 2011 6:48 PM Subject: Re: SETTING CONDITION CODE On Mon, 28 Nov 2011 17:17:13 -0800, Frank Swarbrick frank.swarbr...@yahoo.com wrote: Now that's a nice enhancement. This, along with the allowing of instream datasets in a PROC, gives me hope that IBM is open to further improvements to JCL! How about symbol substitution in instream datasets in a PROC next? (Provided the symbols are evaluated in the context of the PROC call, not of the PROC definition.) -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: SETTING CONDITION CODE
Now that's a nice enhancement. This, along with the allowing of instream datasets in a PROC, gives me hope that IBM is open to further improvements to JCL! Frank From: Jack Schudel j...@nersp.cns.ufl.edu To: IBM-MAIN@bama.ua.edu Sent: Monday, November 28, 2011 3:13 PM Subject: Re: SETTING CONDITION CODE If you are running at the z/OS 1.13 level there are new options on the JOB card for letting you decide which COND CODE gets reported. (Highest, last, or a named step.) See the JOB CARD section of the JCL Reference manual and look for JOBRC= for more information. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: C newbie - pass a LDAP handle out to calling routine
FWIW, COBOL can now call by value, if desired. given: int cfunc (int x, double x, struct t *p); do this: call 'cfunc' using value cobol-fullword cobol-double reference cobol-structure returning ret-fullword Frank From: Bernd Oppolzer bernd.oppol...@t-online.de To: IBM-MAIN@bama.ua.edu Sent: Sunday, November 6, 2011 1:10 PM Subject: Re: C newbie - pass a LDAP handle out to calling routine When calling C routines from other languages like COBOL or PL/1 (or FORTRAN), you have to take into account that in C the parameters are passed by value, whereas the other languages pass them by reference, that is, addresses of the variables. The solution is simple: to construct your C routines so that they can be called from other languages, put a star on every parameter, so that C expects pointers instead of values. Of course, when accessing the parameters inside the C functions, you have to specify the stars, too. that is: int cfunc (int *x, double *x, struct type *p, ..); Furthermore, the result type should be int, so that other languages can read the return code from the C function result. If the parameter type is pointer, you need two stars, of course (that was your point). Of course, this does not solve all the problems. You have still the issue with char strings, which are in fact vectors of single chars, so there is already a star. And you need to unterstand that when passing vectors as parameter, you normally pass the starting address. And, with languages like PL/1, you have the locator/descriptor problem. But that's another topic and has nothing to do with C. Kind regards Bernd Am 06.11.2011 20:08, schrieb Gibney, Dave: With the assistance of several folks over on MVS-OE, I solved my problem. It is clear here that I did fail in the original question to be clear enough that my driving program is not C. The whole intent was to be able to pass that address from ldap_init back out to the non C driver so that it could be reused by the thousands of calls. The solution was: extern int ret2nat (int *back_value, LDAP **ld, char *msg) This pointer to a pointer format allows the fullword in the calling non C program hold the LDAP handle from call to call. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: CRLF in Unix being translated on Mainframe to x'25'
This does not work going the other direction. If it were available it would properly be named SBRECVEOL, or something similar; but the fact is it is not an available option. From: Farley, Peter x23353 peter.far...@broadridge.com To: IBM-MAIN@bama.ua.edu Sent: Monday, October 24, 2011 4:30 PM Subject: Re: CRLF in Unix being translated on Mainframe to x'25' -Original Message- From: Farley, Peter x23353 Sent: Monday, October 24, 2011 6:22 PM To: 'IBM Mainframe Discussion List' Subject: RE: CRLF in Unix being translated on Mainframe to x'25' -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Lizette Koehler Sent: Monday, October 24, 2011 4:10 PM To: IBM-MAIN@bama.ua.edu Subject: CRLF in Unix being translated on Mainframe to x'25' A programmer I am working with is getting a file from Unix which will be sent to the mainframe. This will be using FTP. The process is we receive the file from the Unix system and it is placed on a Windows 2008 server. Then from the Windows 2008 it is going to be FTP'd to the mainframe. Is there a way to keep the CRLF command at the end of each line? And will the mainframe recognize it as a newline? What we really want is the UNIX file to be individual (FB Lrecl 946) going into the mainframe. It seems the Unix CRLF is x'0A' whereas the mainframe is x'25' Assuming for the moment you will be using the Windows 2008 FTP client to send the file, ISTM that the key is for the Unix FTP transfer to translate the Unix line ending (X'0A') into the Windows line ending (X'0D0A') when transferring the file to the Windows box. Then the normal Windows FTP client will recognize the line endings (and Notepad will edit it properly as well). Another alternative if that is not feasible from the Unix-Windows path is to use a Windows version of the Unix utility utod (unix-to-dos) to translate the line endings. I believe Cygwin has a utod somewhere in one of the text-processing packages. The DJGPP Unix ports to command-mode DOS (16-bit only) definitely have utod available. That one may not survive to the next version of Windows though. Win7 already stopped supporting 16-bit applications, so I'm sure the Server versions will follow soon (if they haven't already). If the Unix-to-Windows transfer is being done as a binary transfer, then the Unix guys can do the translation on their end for you ahead of time, using either utod if they have it or they could use the tr utility to do the translation before they FTP the file to your Windows server. As long as the Windows copy of the file has line endings X'0D0A' then even a mainframe-initiated transfer should preserve the record lengths. I also just remembered to check the z/OS SITE parameters available when using the Windows FTP client to send to or receive from the z/OS FTP server. This parameter is available and can be set to LF if you need to: SBSENDEOL=value Specifies the line terminator for outbound SBCS ASCII data. Value is CRLF, CR, LF, or NONE I am not sure what outbound means in this description; it may only refer to receiving files from the mainframe rather than sending them to the mainframe. HTH Peter -- 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...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: CRLF in Unix being translated on Mainframe to x'25'
What method is being used to transport the file from the UNIX box to the Windows box? It should not be a straight binary transfer because, as you've noticed, this does not convert from the UNIX end-of-line delimiter to the Windows end-of-line delimiter. It's a fact that some Windows applications (Wordpad and Notepad++) deal with the UNIX style delimiter as if it had been a Windows style delimiter. And some (Notepad and the default Windows FTP client) do not. But in the end the problem is not really with UNIX or Windows specifically, and it certainly is not with z/OS, but is the method of transporting the file between UNIX and Windows. Frank From: Lizette Koehler stars...@mindspring.com To: IBM-MAIN@bama.ua.edu Sent: Monday, October 24, 2011 3:41 PM Subject: Re: CRLF in Unix being translated on Mainframe to x'25' BTW, do local politics allow going directly to z/OS instead of therough the W2008 box? As for politics. It must be done this way, Unix, to Win2008, to Mainframe. No options here. I have tried several tests. Either I only get one record up on the mainframe or the data is definately in bin format when it arrives. I have tried BIN FB, BIN VB, ASCII FB and ASCII VB. So far the 44 records I have to test with are just not behavingin. The odd thing is that NOTEPAD cannot read this file well. It wraps it (yes tried the WRAP FORMAT in Notepad no luck). So I can see the records circle around in the notepad window. However, Notepad++ sees it as individual records. Still plugging along. I am trying the cmd prompt from my desktop to the mainframe. However, it is possible that this file will be brought up via a batch job on the mainframe. I am trying that now. Lizette -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: MQ alternatives
There are alternatives. As you say, web services is one. I was just hoping for a message queuing alternative to IBM MQ. Most likely we will go the web services path; I just wanted to make sure I wasn't missing a better alternative it it was available and in our price range. Thanks! Frank From: Roberts, John J jrobe...@dhs.state.ia.us To: IBM-MAIN@bama.ua.edu Sent: Friday, October 14, 2011 10:36 AM Subject: Re: MQ alternatives There are gateway products that allow MSMQ to interface with IBM MQ. But I think the OP wants to avoid any configuration requiring any flavor of MQ. In this case the OP needs to ask the 3rd party vendor what other interfacing alternatives exist. For example, is there a possibility for a web service interface? Or is MSMQ supported w/o any need for any flavor of IBM MQ? If a Web Service interfacing option is available, then the OP could implement CICS Web Services to make the connection. If MSMQ is supported, then a Windows process to act as a relay between MSMQ and CICS Web Services could be developed. John -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
MQ alternatives
We have a vendor product that would like us to use WebSphere MQ to interface with it. We do not have MQ, and apparently have to intention of getting it any time soon (too expensive; too much support required...?). They also support some alternative message queuing products (Java Message Service and Microsoft Message Queuing, I believe were mentioned). Are these alternatives, or any others, available to z/OS? Thanks! Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Question About Transfer Report
Is this the solution he was looking for? The solution you give is how an FTP client can retrieve a report from JES. Appears to me the OP wants to know how to have z/OS act as the client and automatically send the report to an FTP server. If this is the case, as it was for us (we also converted from VSE), then a possible solution is MacKinney JES Report Broker. I think that IBM also offers a solution as part of Infoprint Server, but I'm betting the MacKinney product is much less expensive. Frank - Original Message - From: Williamson, James R james.r.william...@uscg.mil To: IBM-MAIN@bama.ua.edu Cc: Sent: Friday, September 9, 2011 11:33 AM Subject: Re: Question About Transfer Report From the archives: http://bama.ua.edu/cgi-bin/wa?A2=ibm-main;bb375ab5.1102 More at the link above, including a link to IBM documentation. Oh! I forgot to mention that you can ftp directly from the JES SPOOL to a desktop, but you need all the JESSPOOL profiles set up correctly. On your desktop: ftp zos userid password ascii quote site filetype=jes jesowner=* jesjobname= dir get Jnnn output.file.name === -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Sérgio Lima Costa Sent: Friday, September 09, 2011 12:21 PM To: IBM-MAIN@bama.ua.edu Subject: RES: Question About Transfer Report Hello. Very good! Do you know, where I can find the documentation about this ? Or some example ? Thanks, Sergio -Mensagem original- De: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] Em nome de Williamson, James R Enviada em: sexta-feira, 9 de setembro de 2011 12:00 Para: IBM-MAIN@bama.ua.edu Assunto: Re: Question About Transfer Report You can FTP from JES2 on z/OS directly to your server without any additional steps. -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Sérgio Lima Costa Sent: Friday, September 09, 2011 9:48 AM To: IBM-MAIN@bama.ua.edu Subject: Question About Transfer Report Hello List. We last weekend migrate our production system here, from Z/VSE to Z/OS. Today both system are running under Z/VM. When was running under Z/VSE, all CICS reports, return to a VM machine, that read from the reader, write in a minidisk, and then do a FTP to a SERVER. What We need today, is that all CICS reports generated under ZOS, also return to a VM machine, for we do the same process. Someone, know, IF exist, and what is a JES parameter that do this, another words, send the OUTPUT reports from ZOS to Z/VM ? Thanks very much. Sergio Lima Costa Atenção: Esta mensagem foi enviada para uso exclusivo do(s) destinatários(s) acima identificado(s), podendo conter informações e/ou documentos confidencias/privilegiados e seu sigilo é protegido por lei. Caso você tenha recebido por engano, por favor, informe o remetente e apague-a de seu sistema. Notificamos que é proibido por lei a sua retenção, disseminação, distribuição, cópia ou uso sem expressa autorização do remetente. Opiniões pessoais do remetente não refletem, necessariamente, o ponto de vista da companhia, o qual é divulgado somente por pessoas autorizadas. Warning: This message was sent for exclusive use of the addressees above identified, possibly containing information and or privileged/confidential documents whose content is protected by law. In case you have mistakenly received it, please notify the sender and delete it from your system. Be noticed that the law forbids the retention, dissemination, distribution, copy or use without express authorization from the sender. Personal opinions of the sender do not necessarily reflect the company's point of view, which is only divulged by authorized personnel. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html Atenção: Esta mensagem foi enviada para uso exclusivo do(s) destinatários(s) acima identificado(s), podendo conter informações e/ou documentos confidencias/privilegiados e seu sigilo é protegido por lei. Caso você tenha recebido por engano, por favor, informe o remetente e apague-a de seu sistema. Notificamos que é proibido por lei a sua retenção, disseminação, distribuição, cópia ou uso sem expressa autorização do remetente. Opiniões pessoais do remetente não refletem, necessariamente, o ponto de vista da companhia, o qual é divulgado somente por pessoas autorizadas. Warning: This message was sent for exclusive use of the addressees
Cobol and large QSAM record length
Even using Spanned (record format is S) or Undefined (record format is U) Cobol (Enterprise COBOL 4.2) appears to not allow a record length more than 32K: 32 IGYGR1224-E The maximum calculated record size of file WIRE-DOCUMENT-FILE was greater than the maximum allowable size 32767. 32767 was assumed. Is this a COBOL limitation or a QSAM limitation? Is VSAM my best (only?) alternative? Thanks, Frank -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Enforcing job name conventions - which exit?
Why would you want to enforce such a ridiculious restriction? :-( From: Robin Atwood robin.atw...@microfocus.com To: IBM-MAIN@bama.ua.edu Sent: Tuesday, August 9, 2011 8:18 AM Subject: Enforcing job name conventions - which exit? From: Robin Atwood Sent: 09 August 2011 15:08 To: 'IBM-MAIN@bama.ua.edu' Subject: Enforcing job name conventions - which exit? We have a requirement that any job submitted to JES2 must have its jobname starting with the userid, like the standard TSO submit command behaviour. I recall this as being a pretty common requirement and was wondering what was the exit usually used - a colleague suggested IEFUJV. Perhaps there is some sample code available? TIA -Robin -- Robin Atwood Communications Technology Micro Focus The Lawn, 22-30 Old Bath Road Newbury, Berkshire, RG14 1QN, UK Direct: +44 1635 565290 Fax: +44 1635 33966 Micro Focus Limited is registered in England and Wales. Registered number: 01504593 Registered office: The Lawn, 22-30 Old Bath Road Newbury, Berkshire, RG14 1QN, UK This message has been scanned by MailController - portal1.mailcontroller.co.uk -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
disclosing business information on the internet
Here's something that I think may be of general interest. Our information security officer sent the following to my manager: The content Frank is positing does not appear to be specific to our environment. However, I am concern by the fact he posts his position, where he works, and phone number. This creates some social engineering risk, as well as discloses information about the operating systems we use. Who can I talk with to ask Frank to remove information related to where he works on this conversation thread and future ones? Are these concerns justified or just paranoia? I like posting this information because I've received useful contacts and information based on it. I'm curious what policies other businesses have. Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: VSAM definition deck from file itself
For VSE you would use Doctor D. For z/OS Anyone know if ASG-SmartFile has such a thing? Seems like any similar tool (File-AID, etc.) should, but I have no idea if they do. Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Z/OS Newbie question
Indeed, I ran in to the same things when converting from VSE to z/OS last year. I look forward to any useful ideas. -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 7/4/2011 at 5:42 AM, in message D1953641A12E63479F578C0F46867B4AB3D62155D3@excmr07, Hilary Hurwitz hila...@nioi.gov.il wrote: I recently moved from being System programmer and ADABAS DBA in a VSE/ESA shop and converted myself to DBA in a Z/OS 1.9 shop. I am still a little overwhelmed by the sheer volume of work, and I managed to get used to saying ISPF and JES instead of Vollie and Power :) I really miss one function - provided by FAQS/ASO. At the end of every batch job, it printed out a list of modules used and which libraries they were taken from. Since we are in the middle of some major conversions here and have pretty complicated jcl procs, it would really help me to have this feature. Has anyone written it ? Could it be done ? Maybe in REXX ? The other thing I would like is to be able to see the compile dates in a load library - all the library at once. We do have File Aid, but it is a pain to get all dates (and maybe even sort on date ?) Ah - the wish list gets longer. Thanks for your help Hilary Hurwitz Israel National Insurance (Social Security) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: An upbeat story
The non-IT thing is interesting. At my company we have many application developers that started elsewhere at the company. Me, for one. I personally had previous IT skills, and some schooling in programming, but most of the others I believe did not. Do non-IT people make better COBOL programmers? Why might that be? Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 6/14/2011 at 11:57 AM, in message BANLkTikXG75y4Jx1xijnpJV=3fta4dj...@mail.gmail.com, Mike Schwab mike.a.sch...@gmail.com wrote: I know Illinois State University, Normal, IL was doing 3 month full time class to create programmers from existing non-IT staff at State Farm / Country Companies Insurance companies in the metro area. They had completed several sessions last update I got. They had to sign an agreeement to work for 1 year or pay back the class costs. On Tue, Jun 14, 2011 at 11:06 AM, Steve Comstock st...@trainersfriend.com wrote: Last week I taught a COBOL class for five days at a small company up in Boulder. They have a refreshing approach that I thought was pretty cool, and I wanted to pass it on. This company (I'll call it 'A') is a subsidiary of a large transportation company ('B'). Although they are small, they run z/OS 1.12, use COBOL 4.2, and so on. * Each Spring for the last two years they go to the local university career day and talk with students about to graduate * Eventually they settle on four to hire * Then, they make their job offer through a contracting company ('C') with the understanding if they work out after a trial period, they will be hired to work directly by 'A' * But what's cool is: a) they only interview students with little or no IS / IT background and b) even though the students will technically be employees of 'C', 'A' arranges to train them The training is done by a mix of in-house people, myself, colleagues, even competitors The result is a small cadre of new employees entering each year, sort of 'raised' in the local IT culture. The new employees are solid and quickly productive, and they have a long lasting loyalty to the company. The current employees are, generally, pleased to see the company expanding the workforce (after all, the new kids are lower on the totem pole, as it were). Although the program is new, it seems to be working very well (I had a chance to talk with some of last year's new hires as well as a few managers). So somebody is hiring for z/OS applications developers. I consider that to be a little good news anyway. -- Kind regards, -Steve Comstock The Trainer's Friend, Inc. 303-393-8716 http://www.trainersfriend.com * To get a good Return on your Investment, first make an investment! + Training your people is an excellent investment * Try our new tool for calculating your Return On Investment for training dollars at http://www.trainersfriend.com/ROI/roi.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Antwort: Differences between REGION=0K and REGION=0M
I prefer SPACE=(0,0) On 5/27/2011 at 10:42 AM, in message 005101cc1c8d$07532e00$15f98a00$@mcn.org, Charles Mills charl...@mcn.org wrote: REGION=0K requests only one-thousandth as much as REGION=0M. Does SPACE=(TRK,0) allocate only 1/15 as much DASD as SPACE=(CYL,0)? Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Paul Gilmartin Sent: Thursday, May 26, 2011 4:38 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Antwort: Differences between REGION=0K and REGION=0M On Thu, 26 May 2011 10:24:31 +0200, Michael Klaeschen wrote: See chapter 16.13.2 of MVS JCL Reference. IBM's explanation there does not differ between 0K and 0M. However, I think you can intercept with a JES exit and may be even IEALIMIT/IEFUSI. REGION=0K requests only one-thousandth as much as REGION=0M. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: COBOL Module Using 'EZASOKET' Calls Receiving 0C!
EZACICAL contains the CICS version of the EZASOKET interface. The batch version is simple EZASOKET. Try just omitting the explicit INCLUDE and let it autolink EZASOKET from TCPIP.SEZATCP. Frank On 5/20/2011 at 5:09 PM, in message 0D00B6C52D003C4983CCA92922F5146B043BB25D@VA3DIAXVS671.RED001.local, John Weber j...@fiteq.com wrote: All, Module HSMSOCKB is a batch COBOL module consisting of only 'EZASOKET' calls. When is submitted it receives the following error: 'CEE3201S The system detected an operation exception (System Completion Code=0C1) From compile unit HSMSOCK at entry point HSMSOCK.' It appears to be having an issue with 'inaccessible storage'. Does anything need to be included with the compile/link besides SEZATCP with the link syslib and 004000 //SYSINDD * 004200 INCLUDE SYSLIB(EZACICAL) 004400 NAME HSMSOCKB(R) With the link as well? Thank you... John Weber FiTeq Inc. Financial Technologies Powering Innovation in Payments 30851 Agoura Road, Suite 103 Agoura, CA 91301 O: 818 483 4487 Fax: 818 865 8562 Cell: 562 221 5702 -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
DFSORT merge, no duplicates
Given the following: //MERGESCF JOB ,'MERGE SCF',NOTIFY=SYSUID //MERGEEXEC PGM=SORT //SORTIN01 DD DISP=SHR,DSN=DAT1.CVSC.CVSSCF //SORTIN02 DD DISP=SHR,DSN=DAT2.CVSC.CVSSCF //SORTOUT DD DISP=SHR,DSN=DVFJS.CVSC.CVSSCF //SYSOUT DD SYSOUT=* //SYSINDD * MERGE FIELDS=(1,30,BI,A) SUMFIELDS=NONE /* Can I be guaranteed that if there a record with the same key in both SORTIN01 and SORTIN02 that SORTOUT will always get the record from SORTIN01 and not SORTIN02? Thanks, Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: DFSORT merge, no duplicates
Thanks! I knew there must be something. Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 5/9/2011 at 3:23 PM, in message offf5bd485.e13342b7-on8825788b.007544bd-8825788b.00757...@us.ibm.com, Frank Yaeger yae...@us.ibm.com wrote: Frank Swarbuck on IBM Mainframe Discussion List IBM-MAIN@bama.ua.edu wrote on 05/09/2011 02:09:40 PM: Given the following: //MERGESCF JOB ,'MERGE SCF',NOTIFY=SYSUID //MERGEEXEC PGM=SORT //SORTIN01 DD DISP=SHR,DSN=DAT1.CVSC.CVSSCF //SORTIN02 DD DISP=SHR,DSN=DAT2.CVSC.CVSSCF //SORTOUT DD DISP=SHR,DSN=DVFJS.CVSC.CVSSCF //SYSOUT DD SYSOUT=* //SYSINDD * MERGE FIELDS=(1,30,BI,A) SUMFIELDS=NONE /* Can I be guaranteed that if there a record with the same key in both SORTIN01 and SORTIN02 that SORTOUT will always get the record from SORTIN01 and not SORTIN02? You need to have EQUALS in effect to guarantee that. For example, add the following to //SYSIN: OPTION EQUALS Frank Yaeger - DFSORT Development Team (IBM) - yae...@us.ibm.com Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration = DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: COBOL to SQL server
You can use Infosphere Federation Server. We do this to access Oracle databases, but Federation Server supports many database types. Costs $$$ of course... -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 5/6/2011 at 5:01 AM, in message banlktikdtaugq0l6ydjto-vsnsffylk...@mail.gmail.com, Jim McAlpine jim.mcalp...@gmail.com wrote: cross posted to DB2 list. Does anyone know if it is possible to issue some SQL from a batch COBOL program running on z/OS to an SQL Server database. Jim McAlpine -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: COBOL to SQL server
I believe DB2 Connect is the other direction (allows non-mainframe access to DB2 for z/OS). Frank On 5/6/2011 at 6:47 AM, in message A826B9FD78356242A9D9595912F9B23234FE3261D0@DOITTMAIL03.doitt.nycnet, Barkow, Eileen ebar...@doitt.nyc.gov wrote: I do not know much about DB2 but I do know that there is a product called DB2 Connect from IBM that allows connections to DB2 on other servers and platforms. -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Roberto Halais Sent: Friday, May 06, 2011 8:41 AM To: IBM-MAIN@bama.ua.edu Subject: Re: COBOL to SQL server I think you can do it using ODBC. http://msdn.microsoft.com/en-us/library/aa266544(v=vs.60).aspx http://msdn.microsoft.com/en-us/library/aa266544(v=vs.60).aspxBut you must check IBM's implementation of ODBC On Fri, May 6, 2011 at 7:01 AM, Jim McAlpine jim.mcalp...@gmail.com wrote: cross posted to DB2 list. Does anyone know if it is possible to issue some SQL from a batch COBOL program running on z/OS to an SQL Server database. Jim McAlpine -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: USS vs USS
Just to unnecessarily add fuel to the fire, the following is a CICS SIT parameter: USSHOME The USSHOME system initialization parameter specifies the name and path of the root directory for CICS® TS 4.1 files on z/OS® UNIX. The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Mixing Auth and Non-Auth Modules
Are you saying that most z/OS COBOL programmers are aware of what SVC and PC routines are? I'm sorry to sound ignorant, but none of the COBOL or z/OS applications development training I've received has any reference to these things. I assumed they were things that only systems programmers knew about/cared about; though I am interested to learn about them. I'm afraid John's explanation went way over my head, though. The manuals, at least the information I could find, appeared to assume a large amount of z/OS system programmer background, which I do not possess. Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 5/1/2011 at 6:01 AM, in message 20110501143800.6c3daf58...@smtp.patriot.net, Shmuel Metz (Seymour J.) shmuel+ibm-m...@patriot.net wrote: In 4db1cabf.6f0f.008...@efirstbank.com, on 04/22/2011 at 06:35 PM, Frank Swarbrick frank.swarbr...@efirstbank.com said: Where can an application programmer who can barely spell SVC and PC get an understanding of what these are? I'll take your word that the majority of your programmers are that ignorant, but do you have proof that all of them are, much less that all of them will be in the future? These things don't typically come to light as part of a routine audit, but only after they've been exploited. It's anybody's guess what percentage of the exploits never came to light. The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Recursive PERFORM in COBOL
Couple questions What do you mean that a recursive PERFORM is forbidden? While I can't think of a good use for it, and when I tried it I got into a loop, it doesn't cause a compile or run-time error. Here's what I tried: identification division. program-id. recur. data division. working-storage section. 77 x pic 9(4) comp value zero. procedure division. perform para goback. para. add 1 to x display x if x 3 display 'before' perform para display 'after' else display 'no' end-if display 'end' . 0001 before 0002 before 0003 no end after end after end after end ...and on and on and on... So while it doesn't work, neither is it apparently disallowed. In any case, I wonder if it would be useful to open a PMR to see if they have any suggestions on how to debug your issue. It's an interesting issue, and in my 15 years of COBOL programming I don't think I've ever had a case where I had to debug such a thing. Lucky perhaps? Can this issue not be reproduced in a test/dev region? I'm surprised it's up to a sysprog to figure out this issue. I don't think my sysprogs would touch COBOL with a ten foot pole. :-) They'd shoot us if we (appl dev) gave this to them to resolve. And rightly so. Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 4/25/2011 at 1:49 PM, in message a6b9336cdb62bb46b9f8708e686a7ea005d9901...@nrhmms8p02.uicnrh.dom, McKown, John john.mck...@healthmarkets.com wrote: It is possible to enter a paragraph in either way: You can PERFORM a section, paragraph, or series of paragraphs (A THRU B). It is possible, but unlikely to have: A. ...code PERFORM B THRU D. PERFORM C. ... GOBACK. B. code ... more code in B C. code ... more code in C D. code ... more code in D E. Now, assume that some statement in C causes an abend. Was it from the first PERFORM, where it just got dropped into on the way from B to D? Or was it the second PERFORM where it was directly PERFORM'd from paragraph A? I will admit that this code sequence is unlikely. But I don't really care. This is for my learning and whining pleasure grin. We don't having anything this unusual. What we have is more like one paragraph which reads a file. That is all it does. But it is PERFORMed from 6 different paragraphs. Which are themselves PERFORMed from more than one other paragraph each. We get a loop (in CICS to be exact) and I cancel the transaction. I am almost always in that read paragraph. With no idea where I came from, so doing diagnostics is difficult. And putting in tracing entries in production CICS code when we are screamed at about the inordinate cost to run the z is just not politically acceptable. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Tobias Schmid Sent: Monday, April 25, 2011 2:32 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Recursive PERFORM in COBOL What triggered this is a desire on my part to __EASILY__ detemine the PERFORM sequence that got me to a particular paragraph. Right now, I must find the PERFORM return slot for the paragraph in execution to determine which paragraph the PERFORM verb is in. And then loop doing the same. And I'm not sure how to determine if a paragraph was truly PERFORM'ed as opposed to dropped into from the preceeding paragraph. Some sort of stack would make this much simpler for me. I think the problem comes with the dropped into. There should be no way, to drop into a paragraph - but if so, then there are goto's - where only performs should be. Or have I missunderstood something? Tobias Schmid
Re: Mixing Auth and Non-Auth Modules
Where can an application programmer who can barely spell SVC and PC get an understanding of what these are? (I know the SVC is supervisor call, but that's about it.) -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 4/22/2011 at 4:56 PM, in message snt113-w11ec58a5bdd48c549c593ec6...@phx.gbl, john gilmore john_w_gilm...@msn.com wrote: Gerhard Postpischl is of course quite right; trapdoors are necessary during the development of much softwar; and they are useful for later troubleshooting tooe. What has interested me more about this thread has been its preoccupation with SVCs, which are at best obsolescent. There is nothing anyone can do with an SVC that I cannot do, much less obtrusively, with a PC-based scheme. The focus of one poster's notionally savvy auditors on SVCs is yet another example, if more be needed, of their preoccupation with safeguards against yesterday's threats. (I am reminded of the DEW Line, which we Americans and our Canadian Allies managed to get operational only a year or so after the last of the Soviet Union's Badger bombers it was to protect us against had been retired.) John Gilmore Ashland, MA 01721-1817 USA -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Is DSNTYPE=EXT parameter only used for VSAM
I'm no expert, but we discovered when we used EXT that we could not use SMS DSS (ADRDSSU) to backup the file, because apparently DSS uses EXCP I/O (or something), and EXT does not support EXCP. Or something like that. -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 4/20/2011 at 4:43 AM, in message 201104201843362657...@163.com, ibmnew ibm...@163.com wrote: Dear DSNTYPE=LARGE: The data sets are large format sequential data sets DSNTYPE=EXT:no track limitation Q1:What's the differences between DSNTYPE=EXT and DSNTYPE=LARGE for large PS? Q2:Could DSNTYPE=EXT replace DSNTYPE=LARGE ? Q3:Ours shop is z/OS 1.11, Every PS should now benefits from EF,Could I assign every PS to use EF including small and large PS? Q4 Is there any disadvantage for EF? Thanks a lot! Best Regards, Jason Cai 64k TRACK limitation, striping, maximum number of extents per volumes (16 vs 123), compression. The above are visible differences. Peter mentioned assembler macros. (Thank you for the clarification!) Depending on your z/OS release EF-PS can reside in EAS (big part of EAV), but AFAIK in 1.12 non-EF PS is also allowed for it. There are also differences on very low-level operations, which are usually invisible and unavailable for regular application user. The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Is DSNTYPE=EXT parameter only used for VSAM
Looks like I was a little backward. It's the DUMP destination file, not source file, that cannot be extended: PAGE 0001 5695-DF175 DFSMSDSS V1R10.0 DATA SET SERVICES 2011.110 11:36 DUMP DATASET (INCLUDE (PROD.DEMAND.PSTMTDB.BKP)) - OUTDDNAME(BACKUP) - COMPRESS ADR101I (R/I)-RI01 (01), TASKID 001 HAS BEEN ASSIGNED TO COMMAND 'DUMP ' ADR109I (R/I)-RI01 (01), 2011.110 11:36:08 INITIAL SCAN OF USER CONTROL STATEMENTS COMPLETED ADR016I (001)-PRIME(01), RACF LOGGING OPTION IN EFFECT FOR THIS TASK ADR006I (001)-STEND(01), 2011.110 11:36:08 EXECUTION BEGINS ADR049E (001)-STEND(01), 2011.110 11:36:08 DFSMSDSS FUNCTION TASK ABEND RECOVERY ROUTINE WAS ENTERED. SYSTEM ABEND CODE=0213 REASON CODE=00B8 ADR415W (001)-DTDSC(04), NO DATA SETS WERE COPIED, DUMPED, OR RESTORED FROM ANY VOLUME ADR006I (001)-STEND(02), 2011.110 11:36:08 EXECUTION ENDS ADR013I (001)-CLTSK(01), 2011.110 11:36:08 TASK COMPLETED WITH RETURN CODE 0016 ADR012I (SCH)-DSSU (01), 2011.110 11:36:08 DFSMSDSS PROCESSING COMPLETE. HIGHEST RETURN CODE IS 0016 FROM: TASK001 Looks like someone already mentioned this, and that it is fixed in z/OS 1.12. On 4/20/2011 at 10:46 AM, in message a6b9336cdb62bb46b9f8708e686a7ea005d9901...@nrhmms8p02.uicnrh.dom, McKown, John john.mck...@healthmarkets.com wrote: Huh? We use DFDSS for volume backups. And __all__ of our VSAM KSDS files are defined as EXT, along with a few PS files. I just tried one and got the message: ADR903I (002)-PSEDM(01), DUMP OF EXTENDED SEQUENTIAL DATA SET DRXPN.DRXPERT.A#COREQS.G1352V00 WAS SUCCESSFUL. SIZE OF DATA SET DUMPED WAS BE26 This is on z/OS 1.10. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Frank Swarbrick Sent: Wednesday, April 20, 2011 11:37 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Is DSNTYPE=EXT parameter only used for VSAM I'm no expert, but we discovered when we used EXT that we could not use SMS DSS (ADRDSSU) to backup the file, because apparently DSS uses EXCP I/O (or something), and EXT does not support EXCP. Or something like that. -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 4/20/2011 at 4:43 AM, in message 201104201843362657...@163.com, ibmnew ibm...@163.com wrote: Dear DSNTYPE=LARGE: The data sets are large format sequential data sets DSNTYPE=EXT:no track limitation Q1:What's the differences between DSNTYPE=EXT and DSNTYPE=LARGE for large PS? Q2:Could DSNTYPE=EXT replace DSNTYPE=LARGE ? Q3:Ours shop is z/OS 1.11, Every PS should now benefits from EF,Could I assign every PS to use EF including small and large PS? Q4 Is there any disadvantage for EF? Thanks a lot! Best Regards, Jason Cai 64k TRACK limitation, striping, maximum number of extents per volumes (16 vs 123), compression. The above are visible differences. Peter mentioned assembler macros. (Thank you for the clarification!) Depending on your z/OS release EF-PS
Re: FTP question
Since no one has mentioned this, it probably won't work on z/OS, but on the Windows based FTP server we use (Gene6), if the user has access to PUT a file but does not have access to DELETE a file, a PUT fails if the file already exists. This is because if the file already exists the FTP server needs to delete it. So if the user does not have delete access the put fails. I don't have any way to test this on z/OS, but someone might want to try it. Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 3/31/2011 at 1:56 AM, in message c11ded818b17214792b97fba28712bed04fa69c...@jer-email1.jer.ad.malam.com, ??? ?? ??? gad...@malam.com wrote: Hi, One of our users wants an ftp transfer to fail if the data set already exists. z/OS is the server. The client is windows. Is this possible? TIA Gadi לשימת לבך, בהתאם לנהלי החברה וזכויות החתימה בה, כל הצעה, התחייבות או מצג מטעם החברה, מחייבים מסמך נפרד וחתום על ידי מורשי החתימה של החברה, הנושא את לוגו החברה או שמה המודפס ובצירוף חותמת החברה. בהעדר מסמך כאמור (לרבות מסמך סרוק) המצורף להודעת דואר אלקטרוני זאת, אין לראות באמור בהודעה אלא משום טיוטה לדיון, ואין להסתמך עליה לביצוע פעולה עסקית או משפטית כלשהי. Please note that in accordance with Malam's signatory rights, no offer, agreement, concession or representation is binding on the company, unless accompanied by a duly signed separate document (or a scanned version thereof), affixed with the company's seal. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
RESTful services discussion
Anyone know of a good newgroup or listserv for discussion of RESTful services? Thanks, Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Dynamic calls from COBOL
Instead of messing with the binder control cards you can specify the COBOL compile option NAME(ALIAS) (which, in fact, adds the relevant binder control cards). If you specify NAME(ALIAS), and your program contains ENTRY statements, a link-edit ALIAS card is generated for each ENTRY statement. -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 3/18/2011 at 2:17 PM, in message of27de444e.0baf690d-on86257857.006f2f1d-86257857.006f6...@us.ibm.com, Wayne Driscoll wdri...@us.ibm.com wrote: Phil, In order for MVS program management to find load module CALL, I think you need to add an ALIAS statement in the Binder Control cards: INCLUDE TESTPGMS(DCALLEE) ALIAS CALL NAMEDCALLEE(R) === Wayne Driscoll OMEGAMON DB2 L3 Support/Development wdrisco(AT)us.ibm.com === From: Phil Smith p...@voltage.com To: IBM-MAIN@bama.ua.edu Date: 03/18/2011 03:05 PM Subject: Dynamic calls from COBOL Sent by: IBM Mainframe Discussion List IBM-MAIN@bama.ua.edu Hoping someone here has more experience with dynamic linking than I do. I'm trying to get something to be dynamically callable from COBOL on z/OS. This is old-style dynamic calling, not DLL stuff. So I've found http://publib.boulder.ibm.com/infocenter/pdthelp/v1r1/index.jsp?topic=/com.i bm.entcobol.doc_4.1/PGandLR/ref/rpsub08.htm and have followed that (I believe), but get S806 ABENDs when calling the *second* entry point in the target module. So either I've missed something, the example is wrong, I'm using some wrong option on the linkedit, or it's gremlins. The callee, with entry points DCALLEE and CALL (yeah, stupid names, but I've been tinkering): --- Identification Division. Program-ID. DCALLEE. Environment Division. Configuration Section. Data Division. Working-Storage Section. Procedure Division. Display DCALLEE got called. goback. Entry CALL. Display CALL got called. GOBACK. End Program DCALLEE. --- JCL to compile/linkedit the callee: --- //IGYWC PROC //COBOL EXEC PGM=IGYCRCTL,REGION=2048K, // PARM='LIB,DYNAM,NODLL' //STEPLIB DDDISP=SHR,DSNAME=IGY340.SIGYCOMP //SYSPRINT DDSYSOUT=* //SYSLIB DDDISP=SHR,DSN=PHS.PDS.SOURCE(DCALLEE) // DDDISP=SHR,DSN=VSH.BASE230.SAMPLIB //SYSLIN DDDISP=SHR,DSN=PHS.PDS.OBJ(DCALLEE) //SYSUT1 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT2 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT3 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT4 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT5 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT6 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT7 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) // PEND // EXEC IGYWC //* //COBOL.SYSIN DD DSN=PHS.PDS.SOURCE(DCALLEE),DISP=SHR //* //LKED EXEC PGM=IEWBLINK,COND=(8,LT), // PARM='LIST,AMODE=31,MAP,LET,RENT,DYNAM(NO)' //SYSPRINT DDSYSOUT=* //SYSLIB DDDISP=SHR,DSN=CEE.SCEELKED //TESTPGMS DDDISP=SHR,DSN=PHS.PDS.OBJ //SYSLMOD DDDISP=SHR,DSN=PHS.PDS.LOAD //SYSUT1 DDUNIT=SYSDA,SPACE=(CYL,(3,1)) //SYSLIN DD* INCLUDE TESTPGMS(DCALLEE) NAMEDCALLEE(R) /* --- The caller: --- PROCESS DYNAM NODLL Identification Division. Program-ID. DCALLER. Environment Division. Configuration Section. Data Division. Working-Storage Section. 77 pgm Pic X(8). Procedure Division. move DCALLEE to pgm. call pgm. move CALL to pgm. call pgm. Stop Run . End Program DCALLER. --- JCL to compile/linkedit/run the caller: --- //IGYWC PROC //COBOL EXEC PGM=IGYCRCTL,REGION=2048K, // PARM='LIB,DYNAM,NODLL' //STEPLIB DDDISP=SHR,DSNAME=IGY340.SIGYCOMP //SYSPRINT DDSYSOUT=* //SYSLIB DDDISP=SHR,DSN=PHS.PDS.SOURCE(DCALLER) // DDDISP=SHR,DSN=VSH.BASE230.SAMPLIB //SYSLIN DDDISP=SHR,DSN=PHS.PDS.OBJ(DCALLER) //SYSUT1 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT2 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT3 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT4 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT5 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT6 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT7 DDUNIT=SYSDA,SPACE=(CYL,(1,1)) // PEND // EXEC IGYWC //* //COBOL.SYSIN DD DSN=PHS.PDS.SOURCE(DCALLER),DISP=SHR //* //LKED EXEC
Space allocation from REFDD?
The documentation states: REFDD Parameter The following attributes are copied to the new data set from (1) the attributes specified on the referenced DD statement, and (2) for attributes not specified on the referenced DD statement, from the data class of the data set specified by the referenced DD statement: - Data set organization - Record organization (RECORG) or - Record format (RECFM) - Record length (LRECL) - Key length (KEYLEN) - Key offset (KEYOFF) - Type, PDS or PDSE (DSNTYPE) - Space allocation (AVGREC and SPACE) Yet I get this error: IEF344I CIRRUS01 BACKUP RPTBKUP - ALLOCATION FAILED DUE TO DATA FACILITY SYSTEM ERROR IGD17045I SPACE NOT SPECIFIED FOR ALLOCATION OF DATA SET DEV.ATM.CIRRPT.BKP.G0006V00 Here is my JCL: //CIRRUS01 JOB ,'CIRRUS REPORTS',NOTIFY=SYSUID //BACKUP EXEC PGM=ICEMAN,COND=(4,LT),PARM=ABEND //SYSINDD * OPTION COPY OUTFIL FNAMES=RPTBKUP //SYSOUT DD SYSOUT=* //SORTIN DD DSN=DEV.RXMTIN.ATM.CIRRPT, //DISP=SHR //RPTBKUP DD DSN=DEV.ATM.CIRRPT.BKP(+1), //REFDD=*.SORTIN, //UNIT=(,7), //DISP=(NEW,CATLG,DELETE) What am I doing wrong? Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Space allocation from REFDD?
I guess I should mention that LIKE with a DSN does work as expected. On 3/11/2011 at 10:00 AM, in message 4d79f2d2.6f0f.008...@efirstbank.com, Frank Swarbrick frank.swarbr...@efirstbank.com wrote: The documentation states: REFDD Parameter The following attributes are copied to the new data set from (1) the attributes specified on the referenced DD statement, and (2) for attributes not specified on the referenced DD statement, from the data class of the data set specified by the referenced DD statement: - Data set organization - Record organization (RECORG) or - Record format (RECFM) - Record length (LRECL) - Key length (KEYLEN) - Key offset (KEYOFF) - Type, PDS or PDSE (DSNTYPE) - Space allocation (AVGREC and SPACE) Yet I get this error: IEF344I CIRRUS01 BACKUP RPTBKUP - ALLOCATION FAILED DUE TO DATA FACILITY SYSTEM ERROR IGD17045I SPACE NOT SPECIFIED FOR ALLOCATION OF DATA SET DEV.ATM.CIRRPT.BKP.G0006V00 Here is my JCL: //CIRRUS01 JOB ,'CIRRUS REPORTS',NOTIFY=SYSUID //BACKUP EXEC PGM=ICEMAN,COND=(4,LT),PARM=ABEND //SYSINDD * OPTION COPY OUTFIL FNAMES=RPTBKUP //SYSOUT DD SYSOUT=* //SORTIN DD DSN=DEV.RXMTIN.ATM.CIRRPT, //DISP=SHR //RPTBKUP DD DSN=DEV.ATM.CIRRPT.BKP(+1), //REFDD=*.SORTIN, //UNIT=(,7), //DISP=(NEW,CATLG,DELETE) What am I doing wrong? Frank The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Space allocation from REFDD?
Ah-hah, ok. Re-reading the docs with that knowledge in mind I see that I made an assumption and that assumption made me misread the docs. Happens too often. Thanks! Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 3/11/2011 at 10:15 AM, in message AANLkTim5SDzJyvfiHfe1OFXQDHpZ=qvpcyp8oucun...@mail.gmail.com, Scott Rowe scott.r...@joann.com wrote: The DD you are referring to does not contain any space information, AFAIK it will not go to the DSCB for that info, it is only copying it from what is in the JCL text. On Fri, Mar 11, 2011 at 12:00 PM, Frank Swarbrick frank.swarbr...@efirstbank.com wrote: The documentation states: REFDD Parameter The following attributes are copied to the new data set from (1) the attributes specified on the referenced DD statement, and (2) for attributes not specified on the referenced DD statement, from the data class of the data set specified by the referenced DD statement: - Data set organization - Record organization (RECORG) or - Record format (RECFM) - Record length (LRECL) - Key length (KEYLEN) - Key offset (KEYOFF) - Type, PDS or PDSE (DSNTYPE) - Space allocation (AVGREC and SPACE) Yet I get this error: IEF344I CIRRUS01 BACKUP RPTBKUP - ALLOCATION FAILED DUE TO DATA FACILITY SYSTEM ERROR IGD17045I SPACE NOT SPECIFIED FOR ALLOCATION OF DATA SET DEV.ATM.CIRRPT.BKP.G0006V00 Here is my JCL: //CIRRUS01 JOB ,'CIRRUS REPORTS',NOTIFY=SYSUID //BACKUP EXEC PGM=ICEMAN,COND=(4,LT),PARM=ABEND //SYSINDD * OPTION COPY OUTFIL FNAMES=RPTBKUP //SYSOUT DD SYSOUT=* //SORTIN DD DSN=DEV.RXMTIN.ATM.CIRRPT, //DISP=SHR //RPTBKUP DD DSN=DEV.ATM.CIRRPT.BKP(+1), //REFDD=*.SORTIN, //UNIT=(,7), //DISP=(NEW,CATLG,DELETE) What am I doing wrong? Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html CONFIDENTIALITY/EMAIL NOTICE: The material in this transmission contains confidential and privileged information intended only for the addressee. If you are not the intended recipient, please be advised that you have received this material in error and that any forwarding, copying, printing, distribution, use or disclosure of the material is strictly prohibited. If you have received this material in error, please (i) do not read it, (ii) reply to the sender that you received the message in error, and (iii) erase or destroy the material. Emails are not secure and can be intercepted, amended, lost or destroyed, or contain viruses. You are deemed to have accepted these risks if you communicate with us by email. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: handling of errors
On 2/17/2011 at 1:31 PM, in message 20110218155212.223c0f58...@smtp.patriot.net, Shmuel Metz (Seymour J.) shmuel+ibm-m...@patriot.net wrote: In 4d5bfc54.6f0f.008...@efirstbank.com, on 02/16/2011 at 04:30 PM, Frank Swarbrick frank.swarbr...@efirstbank.com said: Let me give a very specific example. A change to a program has been made to access a new file. The JCL with the new DD for whatever reason was not implemented. When the program runs and attempts to open the file the open fails. What kind of automatic recovery can resolve this issue? None, of course. There is no of course. The new file might not be mandatory. So what are the somethings? 5.) Raise an exception. If the exception handler determines that the condition is not fatal, it can request continuation. Right! That's what I'm getting at. Exceptions, signaled from where the exception occurs, is very often the way to go. -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html