Re: LE COBOL odd behavior

2012-06-07 Thread Frank Swarbrick
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

2012-05-23 Thread Frank Swarbrick
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

2012-05-23 Thread Frank Swarbrick
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

2012-05-04 Thread Frank Swarbrick
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

2012-05-04 Thread Frank Swarbrick
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 . . .

2012-05-04 Thread Frank Swarbrick
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

2012-04-19 Thread Frank Swarbrick
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

2012-04-19 Thread Frank Swarbrick
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

2012-04-19 Thread Frank Swarbrick
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

2012-04-19 Thread Frank Swarbrick
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

2012-04-18 Thread Frank Swarbrick
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)

2012-04-18 Thread Frank Swarbrick
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)

2012-04-18 Thread Frank Swarbrick
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 ?

2012-04-13 Thread Frank Swarbrick
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 ?

2012-04-13 Thread Frank Swarbrick
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)

2012-04-12 Thread Frank Swarbrick
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 ?

2012-04-12 Thread Frank Swarbrick
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 ?

2012-04-12 Thread Frank Swarbrick
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)

2012-04-12 Thread Frank Swarbrick
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)

2012-04-12 Thread Frank Swarbrick
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 ?

2012-04-12 Thread Frank Swarbrick
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)

2012-04-11 Thread Frank Swarbrick
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)

2012-04-11 Thread Frank Swarbrick
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

2012-04-11 Thread Frank Swarbrick
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

2012-04-11 Thread Frank Swarbrick
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

2012-04-10 Thread Frank Swarbrick
- 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)

2012-04-10 Thread Frank Swarbrick
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)

2012-04-10 Thread 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
  


- 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)

2012-04-10 Thread Frank Swarbrick
- 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)

2012-04-10 Thread Frank Swarbrick
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)

2012-04-10 Thread Frank Swarbrick
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

2012-04-06 Thread Frank Swarbrick
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

2012-04-04 Thread Frank Swarbrick
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

2012-04-04 Thread Frank Swarbrick
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

2012-04-04 Thread Frank Swarbrick
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

2012-04-04 Thread Frank Swarbrick
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

2012-04-03 Thread Frank Swarbrick
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

2012-04-03 Thread Frank Swarbrick
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

2012-04-03 Thread Frank Swarbrick
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

2012-04-03 Thread Frank Swarbrick
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

2012-02-27 Thread Frank Swarbrick
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

2012-02-24 Thread Frank Swarbrick
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

2012-02-23 Thread Frank Swarbrick
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

2012-02-23 Thread Frank Swarbrick
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

2012-02-23 Thread Frank Swarbrick
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

2012-02-23 Thread Frank Swarbrick
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)

2012-02-17 Thread Frank Swarbrick
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)

2012-02-17 Thread Frank Swarbrick
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)

2012-02-17 Thread Frank Swarbrick
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)

2012-02-17 Thread Frank Swarbrick
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

2012-02-16 Thread Frank Swarbrick
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

2012-02-16 Thread Frank Swarbrick
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

2012-02-16 Thread Frank Swarbrick
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

2012-02-15 Thread Frank Swarbrick
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)

2012-02-13 Thread Frank Swarbrick
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)

2012-02-13 Thread Frank Swarbrick
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)

2012-02-13 Thread Frank Swarbrick
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)

2012-02-13 Thread Frank Swarbrick
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

2012-01-25 Thread Frank Swarbrick
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

2012-01-03 Thread Frank Swarbrick
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

2011-12-29 Thread Frank Swarbrick
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.

2011-12-21 Thread Frank Swarbrick
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.

2011-12-12 Thread Frank Swarbrick
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.

2011-12-12 Thread Frank Swarbrick
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.

2011-12-09 Thread Frank Swarbrick
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

2011-12-05 Thread Frank Swarbrick
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

2011-12-05 Thread Frank Swarbrick
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

2011-11-29 Thread Frank Swarbrick
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

2011-11-28 Thread Frank Swarbrick
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

2011-11-07 Thread Frank Swarbrick
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'

2011-10-24 Thread Frank Swarbrick
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'

2011-10-24 Thread Frank Swarbrick
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

2011-10-17 Thread Frank Swarbrick
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

2011-10-13 Thread Frank Swarbrick
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

2011-09-09 Thread Frank Swarbrick
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

2011-08-29 Thread Frank Swarbrick
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?

2011-08-09 Thread Frank Swarbrick
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

2011-07-28 Thread Frank Swarbrick
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

2011-07-15 Thread Frank Swarbrick
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

2011-07-06 Thread Frank Swarbrick
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

2011-06-14 Thread Frank Swarbrick
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

2011-05-27 Thread Frank Swarbrick
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!

2011-05-20 Thread Frank Swarbrick
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

2011-05-09 Thread Frank Swarbrick
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

2011-05-09 Thread Frank Swarbrick
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

2011-05-06 Thread Frank Swarbrick
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

2011-05-06 Thread Frank Swarbrick
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

2011-05-03 Thread Frank Swarbrick
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

2011-05-02 Thread Frank Swarbrick
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

2011-04-25 Thread Frank Swarbrick
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

2011-04-22 Thread Frank Swarbrick
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

2011-04-20 Thread Frank Swarbrick
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

2011-04-20 Thread Frank Swarbrick
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

2011-03-31 Thread Frank Swarbrick
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

2011-03-24 Thread Frank Swarbrick
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

2011-03-18 Thread Frank Swarbrick
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?

2011-03-11 Thread Frank Swarbrick
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?

2011-03-11 Thread Frank Swarbrick
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?

2011-03-11 Thread Frank Swarbrick
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

2011-02-18 Thread Frank Swarbrick
 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


  1   2   3   4   5   >