Re: Language Skills

2017-05-31 Thread Peter Hunkeler

> Us native English speakers have to deal with the world's most complicated 
> language (citation needed), so we have no extra capacity to learn other 
> languages.  We're sorry :-)



LOL. Mankind loves to be challenged, and this explains why that most 
complicated language in the world is now ubiqutious :-)


--
Peter Hunkeler
Native Swiss German speaker

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: SDSF/REXX question

2017-05-31 Thread Elardus Engelbrecht
Hardee, Chuck wrote:

>I am having a random timing issue with a REXX that I am developing using SDSF 
>calls.
>The REXX identifies the job name and number within which it is running and 
>then attempts to use SDSF to find and process the SYSOUT datasets already 
>created by previous steps in the job.

>The REXX works most of the time, but sometimes when it runs, it fails to find 
>itself within the returned job list.
>What I'm hoping to find out via this post is:
>1)  Does anyone know why there appears to be a delay in JES entering the 
>job's output into the queue?
>2)  Has anyone ever experienced this and, if so, what did you do to get 
>around this anomaly, if you did get around it?
>3)  If this is a timing issue, is anyone aware of a means by which I can 
>cause the REXX to delay a second or two before attempting to read the queue 
>entries for the job (name) being executed?


Please post the parts where you call SDSF and how you're retrieving the data 
back from JES2 via SDSF.

Also post the messages where it 'fails to find itself'.

I have other questions to ask: Do you have timing issue when your system is 
busy and/or when the job is busy or spitting out large SYSOUTs? Priority (in 
WLM?) of your REXX or job may play a role?

That "sleep" call solution others gave you, could help you out in the meantime.

Groete / Greetings
Elardus Engelbrecht

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


AW: Re: PIC Z is for zero suppression was Re: A slight regression

2017-05-31 Thread Peter Hunkeler

>I agree that is a likely to astonish but it is standard COBOL, no? No 
>different than if you did MOVE 'GOODBYE' TO SOME-VAR. You'd end up with less 
>than you might have expected.


This is standard behaviour in PL/1 as well, if not explicitly caught with 
STRSIZE.
And it is standard assembler behaviour as well. The target field determines the 
length of an MVC.


What is special about COBOL's standard: Truncation also silently occurs with 
computational fields.




@John:
 There's the DIAGTRUNC compiler option which causes truncation to be flagged.




--
Peter Hunkeler



--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: SDSF/REXX question

2017-05-31 Thread Paul Gilmartin
On Wed, 31 May 2017 22:25:34 -0500, Paul Gilmartin wrote:
>
>>3)  If this is a timing issue, is anyone aware of a means by which I can 
>>cause the REXX to delay a second or two before attempting to read the queue 
>>entries for the job (name) being executed?
>> 
>ADDRESS SYSCALL 'sleep 2'
> 
Citation needed?:

sleep
z/OS Using REXX and z/OS UNIX System Services
SA23-2283-00 

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: SDSF/REXX question

2017-05-31 Thread Paul Gilmartin
On Thu, 1 Jun 2017 02:24:43 +, Hardee, Chuck wrote:
>
>I am having a random timing issue with a REXX that I am developing using SDSF 
>calls.
>The REXX identifies the job name and number within which it is running and 
>then attempts to use SDSF to find and process the SYSOUT datasets already 
>created by previous steps in the job.
> 
I hope you're using the newer ADDRESS SDSF and not the older batch SDSF.

>The REXX works most of the time, but sometimes when it runs, it fails to find 
>itself within the returned job list.
>
How do you get the jobname?  I used ISPF calls.  But that's because I'm loath
to trace control blocks.

>What I'm hoping to find out via this post is:
>
>1)  Does anyone know why there appears to be a delay in JES entering the 
>job's output into the queue?
> 
Is it possible that QSAM buffering intervenes?  But SDSF is quite good at 
chasing buffers to
display the most recent output, at least on a terminal.

>2)  Has anyone ever experienced this and, if so, what did you do to get 
>around this anomaly, if you did get around it?
>
No.  I've used Rexx SDSF to capture SYSTSPRT for the step in progress, tracing 
Rexx,
and I've seen output right to the command that fetched itself.

>3)  If this is a timing issue, is anyone aware of a means by which I can 
>cause the REXX to delay a second or two before attempting to read the queue 
>entries for the job (name) being executed?
> 
ADDRESS SYSCALL 'sleep 2'

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


SDSF/REXX question

2017-05-31 Thread Hardee, Chuck
Hello Listers,

I am having a random timing issue with a REXX that I am developing using SDSF 
calls.
The REXX identifies the job name and number within which it is running and then 
attempts to use SDSF to find and process the SYSOUT datasets already created by 
previous steps in the job.

The REXX works most of the time, but sometimes when it runs, it fails to find 
itself within the returned job list.

What I'm hoping to find out via this post is:

1)  Does anyone know why there appears to be a delay in JES entering the 
job's output into the queue?

2)  Has anyone ever experienced this and, if so, what did you do to get 
around this anomaly, if you did get around it?

3)  If this is a timing issue, is anyone aware of a means by which I can 
cause the REXX to delay a second or two before attempting to read the queue 
entries for the job (name) being executed?

I hope I've stated my problem sufficiently.

Thanks in advance for any information you can provide.

Chuck

Charles (Chuck) Hardee
Senior Systems Engineer/Database Administration
EAS Information Technology

Thermo Fisher Scientific
300 Industry Drive | Pittsburgh, PA 15275
Phone +1 (724) 517-2633 | Mobile +1 (412) 877-2809 | FAX: +1 (412) 490-9230
chuck.har...@thermofisher.com  | 
www.thermofisher.com

WORLDWIDE CONFIDENTIALITY NOTE: Dissemination, distribution or copying of this 
e-mail or the information herein by anyone other than the intended recipient, 
or an employee or agent of a system responsible for delivering the message to 
the intended recipient, is prohibited. If you are not the intended recipient, 
please inform the sender and delete all copies.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: PIC Z is for zero suppression was Re: A slight regression

2017-05-31 Thread John McKown
On Wed, May 31, 2017 at 4:43 PM, Charles Mills  wrote:

> I agree that is a likely to astonish but it is standard COBOL, no? No
> different than if you did MOVE 'GOODBYE' TO SOME-VAR. You'd end up with
> less than you might have expected.
>

​Yes, it is standard. In fact, I wish the compiler would flag the MOVE with
at least a (suppressible?) warning level message.​ The main reason that I
consider it worse than usual is the fact that the ending x'00' is not
explicit in the constant. So a COBOL programmer who is not used to this
"new" facility is not as likely to see a problem. Also, s?he is likely to
count the number of characters in the string and compare it directly with
the value in the PIC. I'm more worried about a programmer who sees
something like:

77 SOME-VAR PIC X(6).
77 VAR-LENGTH PIC S9(9) BINARY.

MOVE Z'HOUSE' TO SOME-VAR.
CALL 'strlen' USING SOME-VAR RETURNING VAR-LENGTH.

Who says to themselves: "I need to make that plural. Well, HOUSES is 6
characters. That will fit in the existing allocation, so I'm good". (i.e.
ignorant or in a hurry) The original program gets back a 5. After the
change to HOUSES, the program gets back a number equal or greater than 6,
depending on what comes after in memory. The COBOL program now has insane
data. Also, it might be that the C routine does something which could
possibly get an S0C4 abend as it "goes wild". Heck, even strlen() might get
an S0C4 as it runs amok. I may be a bit disparaging of COBOL programmers,
but I've seen some really bad COBOL code. A good IDE would be helpful. That
is NOT the editor in ISPF!

Perhaps what I'm getting at is that mixing COBOL and C is more dangerous
than just plain COBOL. Of course, I'm well aware of the "dangers" of index
out of bound or a bad reference modification. Maybe I'm just "death" on
"buffer overflows" after reading how they are often used in malware. I
_love_ PL/I!


>
> Charles
>
>
>

-- 
Windows. A funny name for a operating system that doesn't let you see
anything.

Maranatha! <><
John McKown

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


ES/9000 microcode

2017-05-31 Thread William Donzelli
So this idiot just purchased an 9221 system from Tennessee (apparently
it was still in service two years ago, and is in wonderful condition),
and I made damn sure that the console with the IMPL tape was included.
I even tracked down the machine's former admin just to be sure. I am
going to tell him to guard that tape with his life.

The processor is either a model 191 or 421. How similar is the
microcode between other 9221 types? There are at least a few 9221s of
various models out in collections that currently have the processing
power of potted plants, simply because no one bothered to save the
microcode.

--
Will

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: PIC Z is for zero suppression was Re: A slight regression

2017-05-31 Thread Charles Mills
I agree that is a likely to astonish but it is standard COBOL, no? No different 
than if you did MOVE 'GOODBYE' TO SOME-VAR. You'd end up with less than you 
might have expected.

Charles


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of John McKown
Sent: Wednesday, May 31, 2017 11:04 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: PIC Z is for zero suppression was Re: A slight regression

On Wed, May 31, 2017 at 12:41 PM, Farley, Peter x23353 < 
peter.far...@broadridge.com> wrote:

> Apologies, the Z literal constant was indeed what I mis-remembered as 
> a PICTURE type.  The Z picture type is for zero-suppression of a 
> numeric field and has no relation to the Z literal constant.
>
> Sorry for my confusion.
>
> Peter
>

​It's easy to do. And I'm waiting for some COBOL programmer to ask why the 
following doesn't work:

77 SOME-VAR PIC X(5).

MOVE Z'HELL​O' TO SOME-VAR.
​
In COBOL 4.2, there is no error. Not even a warning (unless I've missed a 
compile option). But the trailing x'00' is quietly truncated. And so if the 
variable is passed to a C routine as a "char *", you are in a world of hurt.​

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Language Skills

2017-05-31 Thread Wayne Bickerdike
Did a European tour with a Namibian tour guide. He said Afrikaans is known
as "baby Dutch". The same way that us English speakers think of US English
as "baby English".

On Thu, Jun 1, 2017 at 2:35 AM, Elardus Engelbrecht <
elardus.engelbre...@sita.co.za> wrote:

> Steve Thompson wrote:
>
> >Radoslaw wrote:
> >> (Disclaimer: my Enlgish is poor, some nuances can be lost in
> translation. )
>
> >I wish my German was as poor as your English.
> >Or to put this as it is actually meant: I wish my German was as good as
> your English.
>
> Hahaha, I wish my English is good, better and excellent like your and
> others English.
>
> If I could only speak Afrikaans on IBM-MAIN, but I believe I'm in the
> minority... ;-D
>
> Groete / Greetings
> Elardus Engelbrecht
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>



-- 
Wayne V. Bickerdike

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Language Skills

2017-05-31 Thread Steve Smith
Not that I'm in favor of off-topic discussions, but like so many, I can't
resist.  Re German: This is a must-see:
https://en.wikipedia.org/wiki/The_Awful_German_Language, about Mark Twain's
ROTFLMAO essay.  The article's information about analytic vs. synthetic
languages is interesting, too.

To Elardus & Radoslaw: Us native English speakers have to deal with the
world's most complicated language (citation needed), so we have no extra
capacity to learn other languages.  We're sorry :-)

sas

On Wed, May 31, 2017 at 12:35 PM, Elardus Engelbrecht <
elardus.engelbre...@sita.co.za> wrote:

> Steve Thompson wrote:
>
> >Radoslaw wrote:
> >> (Disclaimer: my Enlgish is poor, some nuances can be lost in
> translation. )
>
> >I wish my German was as poor as your English.
> >Or to put this as it is actually meant: I wish my German was as good as
> your English.
>
> Hahaha, I wish my English is good, better and excellent like your and
> others English.
>
> If I could only speak Afrikaans on IBM-MAIN, but I believe I'm in the
> minority... ;-D
>
> Groete / Greetings
> Elardus Engelbrecht
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>



-- 
sas

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: DFSORT with empty outputs

2017-05-31 Thread Sri h Kolusu
Elardus,

Here is a JCL which will give you the desired results. I rearrange your 
INCLUDE conditions in the order of positions and it is easy to read and 
Understand. 

We set up a return code of 4 if the INCLUDE results in an empty input. We 
then validate that return code and write the reports or leave them as is. 
If the step0200 results in a empty dataset then you will have return code 
of 4 and the step0300 will NOT run.

//***
//* DELETE IF THE REPORT DATASETS EXIST**
//***
//STEP0100 EXEC PGM=IEFBR14 
//DD01 DD DSN=, 
//DISP=(MOD,DELETE,DELETE), 
//SPACE=(TRK,(1,0),RLSE) 
//* 
//DD02 DD DSN=, 
//DISP=(MOD,DELETE,DELETE), 
//SPACE=(TRK,(1,0),RLSE) 
//* 
//***
//* SET RETURN CODE OF 4 IF THE INCLUDE CONDITIONS RESULT  **
//* IN A EMPTY OUTPUT AND HAVE THE EMPTY HEADERS   **
//***
//STEP0200 EXEC PGM=SORT 
//SYSOUT   DD SYSOUT=* 
//SORTIN   DD DISP=SHR,DSN=Your Input VB file 
//SORTOUT  DD DSN=&,DISP=(,PASS),SPACE=(CYL,(X,Y),RLSE) 
//PRINT3R  DD DSN=, 
//DISP=(NEW,CATLG,DELETE), 
//SPACE=(CYL,(25,25),RLSE) 
/* 
//PRINT3T  DD DSN=, 
//DISP=(NEW,CATLG,DELETE), 
//SPACE=(CYL,(25,25),RLSE) 
/* 
//SYSINDD * 
  OPTION VLSCMP,NULLOUT=RC4 
 
  INCLUDE COND=(005,04,CH,EQ,C'0200',AND, 
054,04,CH,NE,C'YES',AND, 
(100,08,CH,EQ,C'@GROEP',OR, 
 100,08,CH,EQ,C'@PREFIX'),AND, 
118,10,CH,NE,C' ',AND, 
(118,10,CH,NE,19,10,CH)) 
 
 
  SORT FIELDS=(10,8,CH,A) 
 
  OUTFIL FNAMES=PRINT3R,REMOVECC, 
  HEADER2=(001:'@PREFIX - @SYSTM: ACTIVE IDS', 
   037:DATE(4MD/), 
   055:TIME(24:), 
   068:PAGE,/,3/, 
   001:'NR  USER ID   USER NAME ', 
   'DFLT GROUP  CREATED LAST USED',/, 
   001:'--  ---     ', 
   '--  --  --',/, 
   001:' NO IDS FOUND') 
 
  OUTFIL FNAMES=PRINT3T,REMOVECC,NODETAIL, 
  HEADER2=(001:'ACTIVE IDSCOUNT',/, 
   '--   --',/, 
   001:' NO IDS FOUND') 
//* 
//***
//* IF THE ABOVE STEP ISSUES A RETURN CODE OF ZERO THEN WE **
//* HAVE DATA AND GENERATE THE REPORT USING THE REPORT DSN **
//***
//STEP0300 EXEC PGM=ICETOOL,COND=(0,NE,STEP0200) 
//TOOLMSG  DD SYSOUT=* 
//DFSMSG   DD SYSOUT=* 
//INDD DD DISP=SHR,DSN=& 
//PRINT3R  DD DISP=SHR,DSN= 
//PRINT3T  DD DISP=SHR,DSN= 
//TOOLIN   DD * 
DISPLAY FROM(INDD) LIST(PRINT3R) - 
NOCC  - 
WIDTH(500)- 
BETWEEN(2)- 
TITLE('@PREFIX - @SYSTM: ACTIVE IDS') - 
DATE(4MD/)- 
TIME(24:) - 
PAGE  - 
BLANK - 
ON(NUM,N05)   HEADER('NR')   - 
ON(10,8,CH)   HEADER('USER ID')  - 
ON(79,20,CH)  HEADER('USER NAME')- 
ON(100,8,CH)  HEADER('DFLT GROUP')   - 
ON(19,10,CH)  HEADER('CREATED')  - 
ON(118,10,CH) HEADER('LAST USED') 
OCCUR  FROM(INDD) LIST(PRINT3T) - 
   NOCC - 
   WIDTH(500)   - 
   ON(79,1,CH)  HEADER('ACTIVE IDS') - 
   ON(VALCNT,N05)   HEADER('COUNT') 
/* 

Further if you have any questions please let me know

Thanks,
Kolusu
DFSORT Development
IBM Corporation



From:   Elardus Engelbrecht 
To: IBM-MAIN@LISTSERV.UA.EDU
Date:   05/31/2017 04:56 AM
Subject:Re: DFSORT with empty outputs
Sent by:IBM Mainframe Discussion List 



Sri h Kolusu wrote:

>>>Is there a DFSORT or ICETOOL statement where the output contains 
headers plus a line saying 'No selected records found' if nothing selected 
is found?

>It can be done , however I need a few more details.

First thing first, many thanks for offering help.


>1. How are you selecting the data? (using INCLUDE/OMIT COND or OUTFIL 
INCLUDE/OMIT ?)

I am mostly using ICETOOL with both these two sets of statements or only 
with one, like this example with INCLUDE COND:

(PS - fields with @ are replaced by actual contents)

SORTFROM(INDD) TO(TEMP0003) USING(REST) 
DISPLAY FROM(TEMP0003) LIST(PRINT3R) - 
NOCC  - 
WIDTH(500)- 
BETWEEN(2)- 
TITLE('@PREFIX - @SYSTM: Active Ids') -
DATE(4MD/)- 
TIME(24:) - 
PAGE  - 
BLANK - 
ON(NUM,N05)   HEADER('NR')   - 
ON(10,8,CH)   HEADER('User id')  - 
ON(79,20,CH)  HEADER('User Name')- 
ON(100,8,CH)  HEADER('Dflt Group')   

Re: DFSORT TRAN=UTOL and codepages

2017-05-31 Thread Sri h Kolusu
Radoslaw,

TRAN=UTOL will ONLY translate uppercase EBCDIC letters (that is, A-Z) to 
lowercase EBCDIC letters (that is, a-z). Other characters are not changed. 

TRAN=LTOU will ONLY translate lowercase EBCDIC letters (that is, a-z) to 
uppercase EBCDIC letters (that is, A-Z). Other characters are not changed. 


And LOCALE is only used for processing of SORT, MERGE, INCLUDE, or OMIT 
fields. Since you are editing the record using INREC, the locale will not 
have any effect.

>>Is it possible to provide codepage information to UTOL or I have to use 
something like

Unfortunately the current design only allows you to specify each character 
and it's converted value. You can use FINDREP or ALTSEQ to do that.

Thanks,
Kolusu
DFSORT Development
IBM Corporation

IBM Mainframe Discussion List  wrote on 
05/31/2017 06:37:32 AM:

> From: "R.S." 
> To: IBM-MAIN@LISTSERV.UA.EDU
> Date: 05/31/2017 06:38 AM
> Subject: DFSORT TRAN=UTOL and codepages
> Sent by: IBM Mainframe Discussion List 
> 
> I use
> OUTREC BUILD=(1,80,TRAN=UTOL)
> to change uppercase to lowercase characters.
> However it does not change the case for polish national characters 
> (ąćęłńóśżź). I tried to use  LOCALE=PL_pl, but with no effect.
> 
> Is it possible to provide codepage information to UTOL or I have to use 
> something like
> FINDREP=(INOUT=(C'a',C'A'
> for every character?
> 
> -- 
> Radoslaw Skorupka
> Lodz, Poland
> 
> 
> 
> 
> ==
> 
> 
> --
>  Treść tej wiadomości może zawierać informacje prawnie chronione 
> Banku przeznaczone wyłącznie do użytku służbowego adresata. Odbiorcą
> może być jedynie jej adresat z wyłączeniem dostępu osób trzecich. 
> Jeżeli nie jesteś adresatem niniejszej wiadomości lub pracownikiem 
> upoważnionym do jej przekazania adresatowi, informujemy, że jej 
> rozpowszechnianie, kopiowanie, rozprowadzanie lub inne działanie o 
> podobnym charakterze jest prawnie zabronione i może być karalne. 
> Jeżeli otrzymałeś tę wiadomość omyłkowo, prosimy niezwłocznie 
> zawiadomić nadawcę wysyłając odpowiedź oraz trwale usunąć tę 
> wiadomość włączając w to wszelkie jej kopie wydrukowane lub zapisanena 
dysku.
> 
>  This e-mail may contain legally privileged information of the Bank 
> and is intended solely for business use of the addressee. This e-
> mail may only be received by the addressee and may not be disclosed 
> to any third parties. If you are not the intended addressee of this 
> e-mail or the employee authorized to forward it to the addressee, be
> advised that any dissemination, copying, distribution or any other 
> similar activity is legally prohibited and may be punishable. If you
> received this e-mail by mistake please advise the sender immediately
> by using the reply facility in your e-mail software and delete 
> permanently this e-mail including any copies of it either printed or
> saved to hard drive.
> 
>  mBank S.A. z siedzibą w Warszawie, ul. Senatorska 18, 00-950 Warszawa, 
> www.mBank.pl, e-mail: kont...@mbank.plsąd Rejonowy dla m. st. 
> Warszawy XII Wydział Gospodarczy Krajowego Rejestru Sądowego, nr 
> rejestru przedsiębiorców KRS 025237, NIP: 526-021-50-88. Według 
> stanu na dzień 01.01.2016 r. kapitał zakładowy mBanku S.A. (w 
> całości wpłacony) wynosi 168.955.696 złotych.
> 
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> 



--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Displacement of ASG View Direct and PRO/JCL

2017-05-31 Thread Porowski, Kenneth
http://www.lookupmainframesoftware.com/

List software in "Printing and Output"

Select ASG-ViewDirect then go for the whole list of 'Similar Mainframe Software'

I have ASG-View Direct and have occasionally explored other opportunities.  
Rarely do they save $$$ in the long run unless you don't need full 
functionality or are willing to spend a lot of time in reworking/conversion.  
It all depends on the functions you need to keep. One thing to ask a vendor is 
if they have a conversion utility for your database and how do you convert the 
archives.  At least one vendor has claimed that they can read the VDR archives 
directly without conversion.  I did not trial any product so can't confirm/deny 
that claim.




This email message and any accompanying materials may contain proprietary, 
privileged and confidential information of CIT Group Inc. or its subsidiaries 
or affiliates (collectively, “CIT”), and are intended solely for the 
recipient(s) named above.  If you are not the intended recipient of this 
communication, any use, disclosure, printing, copying or distribution, or 
reliance on the contents, of this communication is strictly prohibited.  CIT 
disclaims any liability for the review, retransmission, dissemination or other 
use of, or the taking of any action in reliance upon, this communication by 
persons other than the intended recipient(s).  If you have received this 
communication in error, please reply to the sender advising of the error in 
transmission, and immediately delete and destroy the communication and any 
accompanying materials.  To the extent permitted by applicable law, CIT and 
others may inspect, review, monitor, analyze, copy, record and retain any 
communications sent from or received at this email address.


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Steven Liston
Sent: Wednesday, May 31, 2017 5:59 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: [IBM-MAIN] Displacement of ASG View Direct and PRO/JCL

Do any members have exposure to displacement of ASG's View Direct and/or 
PRO/JCL products?

Looking for experience of the displacement and migration exercise and 
timeframes therein (which I expect for View Direct would be directly related to 
the number of docs stored in the current repository).

Expect PRO/JCL would be fairly straightforward but View Direct perhaps more 
challenging.


Regards.

--
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
lists...@listserv.ua.edu with the message: INFO IBM-MAIN


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: PIC Z is for zero suppression was Re: A slight regression

2017-05-31 Thread John McKown
On Wed, May 31, 2017 at 12:41 PM, Farley, Peter x23353 <
peter.far...@broadridge.com> wrote:

> Apologies, the Z literal constant was indeed what I mis-remembered as a
> PICTURE type.  The Z picture type is for zero-suppression of a numeric
> field and has no relation to the Z literal constant.
>
> Sorry for my confusion.
>
> Peter
>

​It's easy to do. And I'm waiting for some COBOL programmer to ask why the
following doesn't work:

77 SOME-VAR PIC X(5).

MOVE Z'HELL​O' TO SOME-VAR.
​
In COBOL 4.2, there is no error. Not even a warning (unless I've missed a
compile option). But the trailing x'00' is quietly truncated. And so if the
variable is passed to a C routine as a "char *", you are in a world of
hurt.​



-- 
Windows. A funny name for a operating system that doesn't let you see
anything.

Maranatha! <><
John McKown

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: PIC Z is for zero suppression was Re: A slight regression

2017-05-31 Thread Farley, Peter x23353
Apologies, the Z literal constant was indeed what I mis-remembered as a PICTURE 
type.  The Z picture type is for zero-suppression of a numeric field and has no 
relation to the Z literal constant.

Sorry for my confusion.

Peter

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Alan Young
Sent: Wednesday, May 31, 2017 11:49 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: PIC Z is for zero suppression was Re: A slight regression

Clark Morris wrote:
> [Default] On 30 May 2017 12:35:46 -0700, in bit.listserv.ibm-main
> peter.far...@broadridge.com (Farley, Peter x23353) wrote:
>>
>> COBOL does have PICTURE usage type "Z" for zero-terminated strings, so you 
>> don't have to use the STRING verb to construct constant strings with a 
>> zero-byte terminator to call C modules.  I haven't experimented with moving 
>> "normal" COBOL strings (PIC X) to a PIC Z variable, so I do not know if that 
>> would work properly.
>> 
> Picture type Z is for zero suppression so in a PIC Z, if 0 is
> moved to it the result is 5 blanks, if 01234 is moved the result is
> blank1234 and if 12345 is moved the result is 12345.  I don't know oof
> anyway to specify a zero terminated field.

I believe the reference is to the Z literal constant specification. I 
think it may be an IBM extension.

MOVE Z'NULL TERMED STRING' TO WS-STRING

Moves "NULL TERMED STRING*" (where * is a x'00' byte) to WS-STRING.

05 ANOTHER-NULL-TERM-STRING  PIC X(05) VALUE Z'NULL'.

Sets the storage to "NULL*'.

Alan
--

This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Looks like lots of folks in marketing said thanks but no thanks

2017-05-31 Thread David L. Craig
On 17May31:1259+0800, Timothy Sipples wrote:

> In some cases more than two parts are possible: A and B1, B2, B3, etc. When
> there are more than two parts the broadcast equipment needs to add
> location-specific delays to each of the feeds before transmission in order
> to synchronize them properly. But it's possible.
> 
> There are some computing analogs to these split orchestral scenarios.

I'm still waiting for top session players to remote into the studios
such that their local time morning dates are in LA and Nashville and
afternoon in Brazil and Paris.  Only Brazil cancels, but a call comes
in from Sydney for that slot, so it's all good.  That evening there is
a live freewheeling jazz jam session featuring players no closer to
each other than ten thousand killometers.

Audio latencies above 20 milliseconds are challenging:
https://blog.highfidelity.com/how-much-latency-can-live-musicians-tolerate-da8e2ebe587a
-- 

May the LORD God bless you exceedingly abundantly!

Dave_Craig__
"So the universe is not quite as you thought it was.
 You'd better rearrange your beliefs, then.
 Because you certainly can't rearrange the universe."
__--from_Nightfall_by_Asimov/Silverberg_

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: HSM Backup to Disk

2017-05-31 Thread Glenn Wilcock
VTS does wonders for HSM.  Others have made good points about having all of the 
backup copies on disk.  One other thing that I would like to point out would be 
the increase in CPU consumption and elapsed time.  With tape, the compression 
is done within the tape controller.  If you are backing up to disk, HSM must do 
the compression.  That will significantly increase the CPU and will probably 
elongate the elapsed time.  If you do go with disk, I would highly recommend 
using zEDC for the compression.  That will actually decrease the CPU and 
improve the elapsed time because the compression ratio is so good and the data 
is compressed by DSS before being passed to HSM.

Cloud Tape Connector is not an option for HSM data.  CTC works on SMS tape data 
sets, of which HSM and OAM data are not.  As noted earlier in this same thread, 
HSM stacks the data on tape as a single tape file and internally manages the 
location of each logical data set on tape by storing the File Block ID.  CTC 
doesn't work with this type of setup.

Regarding Cloud Storage, HSM and DS8K recently announced support for 
Transparent Cloud Tiering where the DS8K directly writes migration data to 
cloud storage.  The storage can either be on prem or off prem.  The value being 
that the data no longer flows through the z server, significantly reducing the 
CPU requirements and eliminating RECYCLE processing.  But, backup support is 
not yet available.  For those concerned about the data going to 'the cloud', we 
expect most z data to go to an on prem cloud, which is within the walls of your 
existing environments.  When going to an off prem cloud, z/OS will be providing 
data set level encryption, so that the data is encrypted on z before being sent 
out.  By policy, data will be able to be sent to ML2, on prem cloud or an off 
prem (public or private) cloud.

Additionally, IBM announced limited support for this same cloud support to 
target an IBM VTS.  This enables direct data movement between an IBM DS8K and 
IBM VTS for HSM migration and recall processing, also enabling significant CPU 
reduction, elimination of 16K block writes and elimination of RECYCLE 
processing.

Glenn Wilcock
DFSMShsm Architect

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: DFSORT TRAN=UTOL and codepages

2017-05-31 Thread Elardus Engelbrecht
Paul Gilmartin wrote:

>>Is this the right translation for Radoslaw? If so, he would be glad.
>On Linux, not on z/OS.

Ok. Thanks.


>>Or you can easily use REXX function TRANSLATE to do the same [1] , but if the 
>>input is large, then you may have some long overhead.
>Does that work for MBCS?

Hmmm, interesting question. I never used Multi Byte Character Set at all. 
That's a very interesting thing. I will also sniff around REXX-L about this.


>>>BTW, why is the collating sequence for En_US just plain wrong?
>>En_US is not wrong, but Radoslaw needs to use his country's code page. 

>In fact, my Linux setting was:
>572 $ locale -a
>C
>C.UTF-8
>en_US.utf8
>POSIX
>573 $ 

Yes, that is important. I will ask my Linux guru about this. Thanks for your 
kind posting.


>... evidently vim understands polish characters even in the U.S.A.
>But my complaint is that for LC_COLLATE=En_US, SORT on z/OS gives results very 
>simlar to LC_COLLATE=C, whereas LC_COLLATE=En_CA gives more reasonable 
>results.  Problem does not occur on Linux.

Ok, very interesting. Thanks for your very kind clarification. I believe this 
will help others too.

Thanks Paul, I really value your reply!

Groete / Greetings
Elardus Engelbrecht

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Language Skills

2017-05-31 Thread Elardus Engelbrecht
Steve Thompson wrote:

>Radoslaw wrote:
>> (Disclaimer: my Enlgish is poor, some nuances can be lost in translation. )

>I wish my German was as poor as your English.
>Or to put this as it is actually meant: I wish my German was as good as your 
>English.

Hahaha, I wish my English is good, better and excellent like your and others 
English.

If I could only speak Afrikaans on IBM-MAIN, but I believe I'm in the 
minority... ;-D

Groete / Greetings
Elardus Engelbrecht

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: DFSORT TRAN=UTOL and codepages

2017-05-31 Thread Paul Gilmartin
On Wed, 31 May 2017 09:46:35 -0500, Elardus Engelbrecht 
 wrote:
>
>>Is it possible to provide codepage information to UTOL or I have to use 
>>something like 
>>FINDREP=(INOUT=(C'a',C'A' for every character?
>
>>With vim on Linux, I tried: (ąćęłńóśżź). 
>>... then the command:
>>
>>... changed it to: (ĄĆĘŁŃÓŚŻŹ).
>
>Is this the right translation for Radoslaw? If so, he would be glad.
>
On Linux, not on z/OS.

>Or you can easily use REXX function TRANSLATE to do the same [1] , but if the 
>input is large, then you may have some long overhead.
> 
Does that work for MBCS?

>>BTW, why is the collating sequence for En_US just plain wrong?
>
>En_US is not wrong, but Radoslaw needs to use his country's code page. 
>
In fact, my Linux setting was:
572 $ locale -a
C
C.UTF-8
en_US.utf8
POSIX
573 $ 

... evidently vim understands polish characters even in the U.S.A.
But my complaint is that for LC_COLLATE=En_US, SORT on z/OS
gives results very simlar to LC_COLLATE=C, whereas LC_COLLATE=En_CA
gives more reasonable results.  Problem does not occur on Linux.

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread David Crayford
Java is a much simpler language then C++. For starters there is no 
undefined behavior, everything is in the spec. The new lambda 
expressions are a welcome addition but as a language it lacks features 
that languages like C# have in abundance. The one saving grace is 
annotations which a lot of Java gurus dislike.



On 31/05/2017 11:32 PM, Barkow, Eileen wrote:

It seems to me that java is becoming just as complex as C++,  at least what you 
have to know of it to pass the certification exam.
I have been studying some sample java certification exams and cannot understand 
how anyone can pass them without  lots and lots and lots of study.
Most of the questions consists of trying to predict what the compiler will do 
with some convoluted code no one would actually program;
  and it gets even more hairy  with the new lambda expressions, predicates and 
other
Shorthand expressions  supposedly designed to  make things easier but just 
complicates the predictions.
And many of the questions require selecting 2,3,4 or more multiple choice 
answers and getting any part wrong means that the entire question is marked in 
error.

Having to remember the fine, intricate points of various methods and classes 
which can easily be looked up in the API if programming,
And predicting what could easily be run thru the compiler, is not a real 
measure of knowing how to program.
I have known people who knew all the obscure details of a compiler but who were 
not able to code a simple program  on their own.
And since these certification exams cost about $300-$400 a pop to take,   I 
think that some of them are just a money grabbing stunt.

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Steve Smith
Sent: Wednesday, May 31, 2017 10:50 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Question about C++

On Wed, May 31, 2017 at 10:30 AM, Kirk Wolf  wrote:


...  The people that I know that like C++ the most seem to appreciate its
endless
complexity.   ...


I might be a tiny bit guilty.  But for real work, I think the real genius
is figuring out how to make a program as simple as possible (but no
simpler).

sas

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN



This e-mail, including any attachments, may be confidential, privileged or 
otherwise legally protected. It is intended only for the addressee. If you 
received this e-mail in error or from someone who was not authorized to send it 
to you, do not disseminate, copy or otherwise use this e-mail or its 
attachments. Please notify the sender immediately by reply e-mail and delete 
the e-mail from your system.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: HSM Backup to Disk

2017-05-31 Thread Jesse 1 Robinson
I originally interpreted the question as 'how to replace (all) tape with 3390 
DASD?'. VTS is a worthy choice to eliminate traditional tape as we all know and 
(maybe) love it. Behind the virtual tape drives--actually server disk emulation 
as already mentioned--are a set of 'real tape drives' that provide permanent 
and low(er) cost media for data used infrequently or maybe even never but must 
nevertheless be retained indefinitely. 

Starting with VTS from the ground up is a big deal. First off you have to 
decide on a vendor, which is no trivial feat. Implementing is a fairly major 
project, although end users should be lightly affected if at all. In other 
words, you want to have VTS in place and functioning comfortably well before 
you redirect HSM migration.  

.
.
J.O.Skip Robinson
Southern California Edison Company
Electric Dragon Team Paddler 
SHARE MVS Program Co-Manager
323-715-0595 Mobile
626-543-6132 Office ⇐=== NEW
robin...@sce.com


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Robert Heffner
Sent: Wednesday, May 31, 2017 6:40 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: (External):Re: HSM Backup to Disk

Moving HSM backup to disk is just one option we are looking at, we are also 
looking at VTS which I think is going to be the best solution for us.  I was 
told by our DASD vendor that HSM is architected to use tape for backup, and 
using disk can be harder to manage.  To implement a VTS would mean a simple 
recycle to get the 'real tape' backups to virtual tape, but I would still 
prefer to get the VTS on the floor a few months ahead if we can and let the 
tape backups fall off the end, then recycle what is left.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: A slight regression

2017-05-31 Thread David Crayford

On 31/05/2017 11:03 PM, Tony Harminc wrote:

On 30 May 2017 at 20:48, David Crayford  wrote:


If you download IBMs beta nodejs port you will get a free C compiler and
runtime 


I noticed that. I'm probably missing a big chunk here, but why does a
Node.js implementation require its own (or any) C compiler?


Because the package manager npm can compile C/C++ programs when 
installing package sand heaps of node modules are written in C/C++.



Tony H.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: PIC Z is for zero suppression was Re: A slight regression

2017-05-31 Thread Steve Thompson
If I understood what you were saying correctly, one specifies a 
field at the end of the string and moves LOW-VALUES to it. This 
effectively sets that byte to X'00' which is the "zero" I think 
you are looking for.


Or one defines a byte containing LOW-VALUE and then STRINGs it to 
the end of string of data.


HTHs
Steve Thompson


On 05/31/2017 09:23 AM, Clark Morris wrote:

[Default] On 30 May 2017 12:35:46 -0700, in bit.listserv.ibm-main
peter.far...@broadridge.com (Farley, Peter x23353) wrote:


Scott,

That exchange between John and I (around April 7) was about calling C library 
functions directly from COBOL.  It works if you use a static call (COBOL 
literal for the entry point name in UPPER CASE, NODYNAM COBOL compiler option) 
because the C library function load modules (in CEE.SCEELKED) have an external 
reference to the LE initialization subroutine CEESG003 which will do C language 
startup initialization in the enclave.  A dynamic COBOL CALL to a C library 
function (variable name in the CALL or DYNAM COBOL compiler option) will not 
work unless you manually use an INCLUDE SYSLIB(CEESG003) link edit control card 
for your link step to get the C language initialization performed, and include 
CEE.SCEELKED in the link edit SYSLIB DD.

Your code example below should "just work" in terms of getting the C language initialization done 
because your C subroutine will have an external reference to CEESG003, but passing strings and integers is 
trickier, because the C language uses (mostly) "pass by VALUE" instead of the COBOL default of 
"pass by REFERENCE (i.e., pointers)".  You have to carefully use the BY REFERENCE and BY VALUE 
attributes for the COBOL USING variables.  Integers (and probably floats/doubles as well) must be BY VALUE.  
Any structures or arrays (including strings!) or function pointers must be BY REFERENCE.

COBOL does have PICTURE usage type "Z" for zero-terminated strings, so you don't have to 
use the STRING verb to construct constant strings with a zero-byte terminator to call C modules.  I 
haven't experimented with moving "normal" COBOL strings (PIC X) to a PIC Z variable, so I 
do not know if that would work properly.


Picture type Z is for zero suppression so in a PIC Z, if 0 is
moved to it the result is 5 blanks, if 01234 is moved the result is
blank1234 and if 12345 is moved the result is 12345.  I don't know oof
anyway to specify a zero terminated field.

Clark Morris



HTH

Peter

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of scott Ford
Sent: Tuesday, May 30, 2017 2:27 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: A slight regression

John,

I didnt realize you could call C library functions directly, very cool  , here 
is what i would like to do:

 FILE SECTION.
   WORKING-STORAGE SECTION.
   77 TESTSTR   PIC X(30) VALUE SPACES.
   77 VAR1  PIC S9(9) BINARY VALUE 5.
   PROCEDURE DIVISION.
   -MAIN.
  * MOVE 1 TO P1.
  * DISPLAY 'P1: ' P1
  * CALL 'CFUNC' USING P1 RETURNING P2
  * DISPLAY 'P1: ' P1
  * DISPLAY 'P2: ' P2
STRING 'TEST STRING' ,
   LOW-VALUE
DELIMITED BY SIZE INTO TESTSTR
DISPLAY 'CALL CENTRY USING: ' TESTSTR
CALL 'CENTRY' USING  TESTSTR.
GOBACK.



#include 
#include 
#include 
void CENTRY(char* mystring)
{
  printf("my string: %s \n",mystring);
}

I am trying to understand how to perform the call and pass a string and or a 
integer ...

Thanks John..

Regards.
Scott

On Tue, May 30, 2017 at 2:19 PM, John McKown 
wrote:


On Tue, May 30, 2017 at 1:07 PM, scott Ford  wrote:


All:

I saw a thread between Peter Fairley and John  in April, this year

speaking

about a cobol program calling C ..I am in the same board but did not
see the C code. Can some one help me out and point me to the C
routine or function ?



?Minor example at:
https://gist.github.com/JohnArchieMckown/5b973d46108bd24e0c6f9233c9617
6b0

Calls the C subroutines: cuserid(), strlen(). and sscanf(). I don't
have a C compiler, so I don't have an example of any "user written" C code.





Thanks and I appreciate it

--

*IDMWORKS *

Scott Ford

z/OS Dev.




--
Windows. A funny name for a operating system that doesn't let you see
anything.

Maranatha! <><
John McKown



--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN



--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: PIC Z is for zero suppression was Re: A slight regression

2017-05-31 Thread Alan Young

Clark Morris wrote:

[Default] On 30 May 2017 12:35:46 -0700, in bit.listserv.ibm-main
peter.far...@broadridge.com (Farley, Peter x23353) wrote:

  


COBOL does have PICTURE usage type "Z" for zero-terminated strings, so you don't have to 
use the STRING verb to construct constant strings with a zero-byte terminator to call C modules.  I 
haven't experimented with moving "normal" COBOL strings (PIC X) to a PIC Z variable, so I 
do not know if that would work properly.



Picture type Z is for zero suppression so in a PIC Z, if 0 is
moved to it the result is 5 blanks, if 01234 is moved the result is
blank1234 and if 12345 is moved the result is 12345.  I don't know oof
anyway to specify a zero terminated field.


  


I believe the reference is to the Z literal constant specification. I 
think it may be an IBM extension.


MOVE Z'NULL TERMED STRING' TO WS-STRING

Moves "NULL TERMED STRING*" (where * is a x'00' byte) to WS-STRING.

05 ANOTHER-NULL-TERM-STRING  PIC X(05) VALUE Z'NULL'.

Sets the storage to "NULL*'.

Alan

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread John McKown
On Wed, May 31, 2017 at 10:32 AM, Barkow, Eileen 
wrote:

> It seems to me that java is becoming just as complex as C++,  at least
> what you have to know of it to pass the certification exam.
> I have been studying some sample java certification exams and cannot
> understand how anyone can pass them without  lots and lots and lots of
> study.
> Most of the questions consists of trying to predict what the compiler will
> do with some convoluted code no one would actually program;
>  and it gets even more hairy  with the new lambda expressions, predicates
> and other
> Shorthand expressions  supposedly designed to  make things easier but just
> complicates the predictions.
> And many of the questions require selecting 2,3,4 or more multiple choice
> answers and getting any part wrong means that the entire question is marked
> in error.
>
> Having to remember the fine, intricate points of various methods and
> classes which can easily be looked up in the API if programming,
> And predicting what could easily be run thru the compiler, is not a real
> measure of knowing how to program.
> I have known people who knew all the obscure details of a compiler but who
> were not able to code a simple program  on their own.
> And since these certification exams cost about $300-$400 a pop to take,
>  I think that some of them are just a money grabbing stunt.
>
>
​I completely agree with your assertions. Most "certificates" can most
easily be acquired by an "idiot savant" who can memorize, but not really
think creatively. IMO, a big part of programming is really stating the
problem "properly". The question's phrasing often "suggests"  the approach
to the answer.​ So a bad phrasing can cause a bad answer.

When I do Java programming, I use a Java IDE, such as Netbeans or Eclipse.
ISPF edit is a _joke_ compared to these tools. And, with them, it is far
easier to program. With Netbeans, for example, I can simply point it to the
JAR file and JavaDoc directories to have in-editor contextual help. And it
can easily reformat code to standards. Or even refactor it if I need to
make some more complicated internal changes. A good IDE takes care of the
"housecleaning" for us.


-- 
Windows. A funny name for a operating system that doesn't let you see
anything.

Maranatha! <><
John McKown

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread Barkow, Eileen
It seems to me that java is becoming just as complex as C++,  at least what you 
have to know of it to pass the certification exam.
I have been studying some sample java certification exams and cannot understand 
how anyone can pass them without  lots and lots and lots of study.
Most of the questions consists of trying to predict what the compiler will do 
with some convoluted code no one would actually program;
 and it gets even more hairy  with the new lambda expressions, predicates and 
other
Shorthand expressions  supposedly designed to  make things easier but just 
complicates the predictions.
And many of the questions require selecting 2,3,4 or more multiple choice 
answers and getting any part wrong means that the entire question is marked in 
error.

Having to remember the fine, intricate points of various methods and classes 
which can easily be looked up in the API if programming,
And predicting what could easily be run thru the compiler, is not a real 
measure of knowing how to program.
I have known people who knew all the obscure details of a compiler but who were 
not able to code a simple program  on their own.
And since these certification exams cost about $300-$400 a pop to take,   I 
think that some of them are just a money grabbing stunt.

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Steve Smith
Sent: Wednesday, May 31, 2017 10:50 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Question about C++

On Wed, May 31, 2017 at 10:30 AM, Kirk Wolf  wrote:

> ...  The people that I know that like C++ the most seem to appreciate its
> endless
> complexity.   ...


I might be a tiny bit guilty.  But for real work, I think the real genius
is figuring out how to make a program as simple as possible (but no
simpler).

sas

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN



This e-mail, including any attachments, may be confidential, privileged or 
otherwise legally protected. It is intended only for the addressee. If you 
received this e-mail in error or from someone who was not authorized to send it 
to you, do not disseminate, copy or otherwise use this e-mail or its 
attachments. Please notify the sender immediately by reply e-mail and delete 
the e-mail from your system.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: A slight regression

2017-05-31 Thread Tony Harminc
On 30 May 2017 at 20:48, David Crayford  wrote:

> If you download IBMs beta nodejs port you will get a free C compiler and
> runtime 


I noticed that. I'm probably missing a big chunk here, but why does a
Node.js implementation require its own (or any) C compiler?

Tony H.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Displacement of ASG View Direct and PRO/JCL

2017-05-31 Thread Lund James E
Steven,
We are in the same boat with ASG VD product, and are POCing in-house tools to 
do the sweep/conversion. Glad to share with you offline where we're at.

Regards,
James
james-l...@tamu.edu

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Steven Liston
Sent: Wednesday, May 31, 2017 4:59 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: [IBM-MAIN] Displacement of ASG View Direct and PRO/JCL

Do any members have exposure to displacement of ASG's View Direct and/or 
PRO/JCL products?

Looking for experience of the displacement and migration exercise and 
timeframes therein (which I expect for View Direct would be directly related to 
the number of docs stored in the current repository).

Expect PRO/JCL would be fairly straightforward but View Direct perhaps more 
challenging.


Regards.

--
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread Steve Smith
On Wed, May 31, 2017 at 10:30 AM, Kirk Wolf  wrote:

> ...  The people that I know that like C++ the most seem to appreciate its
> endless
> complexity.   ...


I might be a tiny bit guilty.  But for real work, I think the real genius
is figuring out how to make a program as simple as possible (but no
simpler).

sas

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Language Skills

2017-05-31 Thread Steve Thompson

On 05/31/2017 07:33 AM, R.S. wrote:



(Disclaimer: my Enlgish is poor, some nuances can be lost in 
translation. )




I wish my German was as poor as your English.

Or to put this as it is actually meant: I wish my German was as 
good as your English.


Mind you, I have German speaking family, so my need for German is 
more than to pass a class...


-- Computer related reasons: I need to converse with SUSE 
personnel in Germany from time to time, and my German spelling is 
terrible.


Regards,
Steve Thompson

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: DFSORT TRAN=UTOL and codepages

2017-05-31 Thread Elardus Engelbrecht
Paul Gilmartin wrote:

>R.S. wrote:
>>I use OUTREC BUILD=(1,80,TRAN=UTOL) to change uppercase to lowercase 
>>characters. However it does not change the case for polish national 
>>characters (ąćęłńóśżź). I tried to use  LOCALE=PL_pl, but with no effect. Is 
>>it possible to provide codepage information to UTOL or I have to use 
>>something like 
FINDREP=(INOUT=(C'a',C'A' for every character?

>With vim on Linux, I tried: (ąćęłńóśżź). 
>... then the command:
>
>... changed it to: (ĄĆĘŁŃÓŚŻŹ).

Is this the right translation for Radoslaw? If so, he would be glad.

Or you can easily use REXX function TRANSLATE to do the same [1] , but if the 
input is large, then you may have some long overhead.

>BTW, why is the collating sequence for En_US just plain wrong?

En_US is not wrong, but Radoslaw needs to use his country's code page. 

I hope there is a DFSORT solution for this specific translation.

Groete / Greetings
Elardus Engelbreecht

[1] - I have used that TRANSLATE function in the past on some printouts because 
the printers sometimes print incorrect characters or eject blank or halfprinted 
pages upon handling an incorrect character(s). (some of them are in the range 
x'00' - x'39')

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread Kirk Wolf
I would agree with some of what you say Steve, but  I've used C++ for over
25 years and I still don't like it much :-)

Other languages that I have used intensely like Smalltalk and Java
eventually fade into the background after you master them.   The people
that I know that like C++ the most seem to appreciate its endless
complexity.   That said, a subset of C++ with some tiny assembler routines
is for us the best choice for most of what we write on z/OS.

Kirk Wolf
Dovetailed Technologies
http://dovetail.com

On Tue, May 30, 2017 at 7:13 PM, Steve Smith  wrote:

> C++ is my favorite language (I was historically a PL/I fan), but it's a
> deep pool to get into.  Decent object-oriented programming requires
> learning a whole bunch of new ways to do things, and think about things.
> There are many layers now of functionality, and there's no serious "Learn
> C++ In Seven Days" book any more.  The language has grown and expanded
> quite a bit past where my knowledge and experience ends.
>
> But I definitely agree that's it's useful as "enhanced C".  But as you
> learn more, you can implement more and better patterns... try not to rush
> it too much, and free advice: write, don't read (code).  There may be a
> 1000 ways to do things wrong in assembler, but there's billions in C++.  So
> be careful about the examples you emulate.  The founder of C++ said
> something like "You can shoot yourself in the foot with any language, but
> with C++, it'll blow your leg clean off."
>
> Eventually, the big problem with OOP is designing an intelligent class
> hierarchy to solve a particular problem.  And that is where so many go
> wrong.  The real world of applications rarely comes up with something as
> obvious as Thing: Animal/Vegetable/Mineral. Animal: Cat/Dog.
>
> And then you can get into templates, and whatever new & crazy stuff they've
> thought of recently.  It's a whole new world, lots of fun, but it gets a
> long long way away from what you're probably used to in assembly (or C for
> that matter).  But again, a subset of C++ is useful and valuable; you don't
> have to (and it's probably insane to) use every feature.
>
> sas
>
> On Tue, May 30, 2017 at 12:18 PM, Kirk Wolf  wrote:
>
> > We use a small subset of C++ (better C) on z/OS:
> >
> > classes (encapsulation)  (but very little use of inheritance)
> > RIAA
> > exceptions
> > better type checking
> > improved syntax (like late declaration of variables)
> > inlining of functions in class header  (and very little use of function
> > macro)
> >
> >
> > Kirk Wolf
> > Dovetailed Technologies
> > http://dovetail.com
> >
> > On Tue, May 30, 2017 at 7:22 AM, David Crayford 
> > wrote:
> >
> > > This might bewilder you some more because C++ is a tricky language for
> a
> > > beginner. It''s a simple thin wrapper class around C stdio that
> provides
> > > RAII and some return value checks that throw exception when errors
> occur.
> > > If you can work this out you're well on your way to being competent.
> It's
> > > mainly meant as a demonstrator for constructors/destructors which are
> > > fundamental to C++ programming.
> > >
> > > #include 
> > > #include 
> > > #include 
> > > #include 
> > >
> > > class File
> > > {
> > > public:
> > > // default constructor
> > > File() : m_file( 0 ) {}
> > >
> > > // constructor - opens the file
> > > File( const std::string & filename, const std::string & mode )
> > > : m_file( 0 )
> > > {
> > > std::cout << "constructor\n";
> > > open( filename, mode );
> > > }
> > >
> > > // move constructor - takes ownership of the underlying file object
> > > File( File && rhs ) : m_file(0)
> > > {
> > > std::cout << "move constructor\n";
> > > m_file = rhs.m_file;
> > > rhs.m_file = 0;
> > > }
> > >
> > > // destructor
> > > ~File()
> > > {
> > > close();
> > > }
> > >
> > > public:
> > > // opens a file
> > > void open( const std::string & filename, const std::string & mode )
> > > {
> > > std::cout << "opening file " << filename << "\n";
> > > m_file = fopen( filename.c_str(), mode.c_str() );
> > > if (!m_file) throw std::runtime_error( "Error opening file: " +
> > > std::string( strerror( errno ) ) );
> > > }
> > >
> > > // closes the files
> > > void close()
> > > {
> > > if (m_file)
> > > {
> > > std::cout << "closing file\n";
> > > fclose( m_file );
> > > m_file = 0;
> > > }
> > > }
> > >
> > > // reads from the file
> > > int read( void * buffer, size_t size )
> > > {
> > > return fread( buffer, 1, size, m_file );
> > > }
> > >
> > > // writes to the file
> > > int write( const void * buffer, size_t size )
> > > {
> > > int bytesWritten = fwrite( buffer, 1, size, m_file );
> > > if (bytesWritten == 0) 

Re: Question about C++

2017-05-31 Thread Paul Gilmartin
On Wed, 31 May 2017 06:06:39 -0700, Charles Mills wrote:
>
>The point of the OO constructs is not that there is no other way to do things. 
>Obviously, any object program that can be produced by a compiler could have 
>been written in HLASM.
> 
... but you may need to use the PUNCH statement.  At least that was
the case through assembler H.

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: DFSORT TRAN=UTOL and codepages

2017-05-31 Thread Paul Gilmartin
On Wed, 31 May 2017 15:37:32 +0200, R.S. wrote:

>I use
>OUTREC BUILD=(1,80,TRAN=UTOL)
>to change uppercase to lowercase characters.
>However it does not change the case for polish national characters
>(ąćęłńóśżź). I tried to use  LOCALE=PL_pl, but with no effect.
>
>Is it possible to provide codepage information to UTOL or I have to use
>something like
>FINDREP=(INOUT=(C'a',C'A'
>for every character?
> 
With vim on Linux, I tried:
(ąćęłńóśżź). 

... then the command:


... changed it to:
(ĄĆĘŁŃÓŚŻŹ).

z/OS is a century behind the times.

BTW, why is the collating sequence for En_US just plain wrong?

-- gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Displacement of ASG View Direct and PRO/JCL

2017-05-31 Thread Mitch Mccluhan
 ...there is a better tool to replace ProJCL (I was one of the Product Managers 
on the precursor to ProJCL back in the day).  The tool is J-MAN from RES.  It 
is far superior to any other JCL automation tool.  The conversion is 
straightforward and simple.

Regards,

 

Mitch McCluhan
mitc...@aol.com

 

 

-Original Message-
From: Lizette Koehler 
To: IBM-MAIN 
Sent: Wed, May 31, 2017 8:58 am
Subject: Re: Displacement of ASG View Direct and PRO/JCL

I have found from a past shop that SEA JCL+ to be a good replacement for PROJCL.

The company was very helpful in converting from PROJCL to their version of the 
syntax checker.

It was an easy migration to their tool.

Not sure about View direct.

Systemware has a product that might be a good replacement.  Or CA has products.


Systemware Content Server z/OS (Xptr)
Systemware Content Server DS (for distributed content servers on Windows 
and Unix platforms)



Lizette


> -Original Message-
> From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
> Behalf Of Steven Liston
> Sent: Wednesday, May 31, 2017 2:59 AM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Displacement of ASG View Direct and PRO/JCL
> 
> Do any members have exposure to displacement of ASG's View Direct and/or
> PRO/JCL products?
> 
> Looking for experience of the displacement and migration exercise and
> timeframes therein (which I expect for View Direct would be directly related
> to the number of docs stored in the current repository).
> 
> Expect PRO/JCL would be fairly straightforward but View Direct perhaps more
> challenging.
> 
> 
> Regards.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Displacement of ASG View Direct and PRO/JCL

2017-05-31 Thread Lizette Koehler
I have found from a past shop that SEA JCL+ to be a good replacement for PROJCL.

The company was very helpful in converting from PROJCL to their version of the 
syntax checker.

It was an easy migration to their tool.

Not sure about View direct.

Systemware has a product that might be a good replacement.  Or CA has products.


Systemware Content Server z/OS (Xptr)
Systemware Content Server DS (for distributed content servers on Windows 
and Unix platforms)



Lizette


> -Original Message-
> From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
> Behalf Of Steven Liston
> Sent: Wednesday, May 31, 2017 2:59 AM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Displacement of ASG View Direct and PRO/JCL
> 
> Do any members have exposure to displacement of ASG's View Direct and/or
> PRO/JCL products?
> 
> Looking for experience of the displacement and migration exercise and
> timeframes therein (which I expect for View Direct would be directly related
> to the number of docs stored in the current repository).
> 
> Expect PRO/JCL would be fairly straightforward but View Direct perhaps more
> challenging.
> 
> 
> Regards.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread David Crayford
And I should have called it the implicit conversion operator. It's a 
good example of how to use C++ as a better C to make use of destructors.



On 31/05/2017 9:41 PM, David Crayford wrote:

Re-posted due to formatting issues:

I think I should have used the term object based for non-OO languages. 
Scope based finalization is a sweet spot of C++ with scoped based 
destructors. I'm coding a lot of Java at the moment and having to code 
finally blocks or use the try-with-resources statement is tedious. But 
my point was mainly about polymorphism and how it can be implemented 
in languages that have function pointers. Of course, in a language 
that has no destructors or finalization you have to explicitly call a 
destructor.


Here is a nifty piece of C++ code that wraps the C stdio FILE 
structure which implements RAII to call fclose() by using a implicit 
pointer operator! It's one of the many C++ features many people are 
not aware of. Props to Jerry Coffin who invented it.


class file {
typedef FILE *ptr;

ptr wrapped_file;
public:
file(std::string const , std::string const  = 
std::string("r")) :

wrapped_file(fopen(name.c_str(), mode.c_str()))
{ }

operator ptr() const { return wrapped_file; }

~file() { if (wrapped_file) fclose(wrapped_file); }
};

- 



file f("myfile.txt", "w");

if (!f) {
   fprintf(stderr, "Unable to open file\n");
   return 0;
}

fprintf(f, "Hello world");


On 31/05/2017 9:06 PM, Charles Mills wrote:

There's no reason why you can't write OO code in assembler.
And there's no reason you could not write OO code by keying the bits 
in through a debugger.


The point of the OO constructs is not that there is no other way to 
do things. Obviously, any object program that can be produced by a 
compiler could have been written in HLASM.


The point of OO constructs is never having to say "was there 
something I was supposed to call when I was finished with this record 
(DSECT, struct, class, ...)?" What was its name? Where is the pointer 
to it? What are the calling parameters? Or worse, I just realized I 
am going to need a cleanup routine for this record. Now I have to go 
back and make sure that every piece of code that uses it gets 
modified to call the cleanup routine. You just delete the class and 
if it has a destructor, it gets called. Voila!


Charles


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] 
On Behalf Of David Crayford

Sent: Tuesday, May 30, 2017 7:46 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Question about C++

On 30/05/2017 9:52 PM, Charles Mills wrote:

You're trying to scare the poor man!

After I learned OO, I realized the problem in trying to communicate 
the concepts.


- The easy-to-grasp explanations are stupid: Animal is a class. Dog 
and Cat are child classes of Animal. Fido is an instance of Dog. You 
could have an inherited public overridden method Speak() and say 
myAnimal.Speak() and if it were a Dog it would bark and if it were a 
Cat it would Meow ...
Agreed. Inheritance should generally be avoided anyway. It has it's 
place but composition should be preferred 9 times out of 10. 
Inheritance is tightly coupled and can become incomprehensible once 
it gets a few layers deep.


- The real problems that are solved by the significant features are 
too hard to explain in a simple tutorial. I solved a problem the 
other day with a very sparsely-implemented virtual polymorphic 
method -- but it would take me an hour to explain what the problem was.
Polymorphism is the key principle and you don't need an OO language 
to use it. Any language with function pointers can implement 
polymorphism.
A case in point is the z/OS C stdio runtime which supports many 
different types of data source. fopen() is the factory function which 
populates the read/write (virtual) function pointers in the FILE 
structure. There's no reason why you can't write OO code in 
assembler. I see lots of assembler code with constitutional logic 
littered throughout which call different functions depending on some 
type which would benefit from an OO design.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN




--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread John McKown
On Wed, May 31, 2017 at 8:41 AM, David Crayford  wrote:

> Re-posted due to formatting issues:


​Thanks. Much easier to understand.


>
> I think I should have used the term object based for non-OO languages.
> Scope based finalization is a sweet spot of C++ with scoped based
> destructors. I'm coding a lot of Java at the moment and having to code
> finally blocks or use the try-with-resources statement is tedious. But my
> point was mainly about polymorphism and how it can be implemented in
> languages that have function pointers. Of course, in a language that has no
> destructors or finalization you have to explicitly call a destructor.
>
> Here is a nifty piece of C++ code that wraps the C stdio FILE structure
> which implements RAII to call fclose() by using a implicit pointer
> operator! It's one of the many C++ features many people are not aware of.
> Props to Jerry Coffin who invented it.
>
> class file {
> typedef FILE *ptr;
>
> ptr wrapped_file;
> public:
> file(std::string const , std::string const  =
> std::string("r")) :
> wrapped_file(fopen(name.c_str(), mode.c_str()))
> { }
>
> operator ptr() const { return wrapped_file; }
>
> ~file() { if (wrapped_file) fclose(wrapped_file); }
> };
>
> 
> -
>
> file f("myfile.txt", "w");
>
> if (!f) {
>fprintf(stderr, "Unable to open file\n");
>return 0;
> }
>
> fprintf(f, "Hello world");
>
>
> On 31/05/2017 9:06 PM, Charles Mills wrote:
>
>> There's no reason why you can't write OO code in assembler.
>>>
>> And there's no reason you could not write OO code by keying the bits in
>> through a debugger.
>>
>> The point of the OO constructs is not that there is no other way to do
>> things. Obviously, any object program that can be produced by a compiler
>> could have been written in HLASM.
>>
>> The point of OO constructs is never having to say "was there something I
>> was supposed to call when I was finished with this record (DSECT, struct,
>> class, ...)?" What was its name? Where is the pointer to it? What are the
>> calling parameters? Or worse, I just realized I am going to need a cleanup
>> routine for this record. Now I have to go back and make sure that every
>> piece of code that uses it gets modified to call the cleanup routine. You
>> just delete the class and if it has a destructor, it gets called. Voila!
>>
>> Charles
>>
>>
>> -Original Message-
>> From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
>> Behalf Of David Crayford
>> Sent: Tuesday, May 30, 2017 7:46 PM
>> To: IBM-MAIN@LISTSERV.UA.EDU
>> Subject: Re: Question about C++
>>
>> On 30/05/2017 9:52 PM, Charles Mills wrote:
>>
>>> You're trying to scare the poor man!
>>>
>>> After I learned OO, I realized the problem in trying to communicate the
>>> concepts.
>>>
>>> - The easy-to-grasp explanations are stupid: Animal is a class. Dog and
>>> Cat are child classes of Animal. Fido is an instance of Dog. You could have
>>> an inherited public overridden method Speak() and say myAnimal.Speak() and
>>> if it were a Dog it would bark and if it were a Cat it would Meow ...
>>>
>> Agreed. Inheritance should generally be avoided anyway. It has it's place
>> but composition should be preferred 9 times out of 10. Inheritance is
>> tightly coupled and can become incomprehensible once it gets a few layers
>> deep.
>>
>> - The real problems that are solved by the significant features are too
>>> hard to explain in a simple tutorial. I solved a problem the other day with
>>> a very sparsely-implemented virtual polymorphic method -- but it would take
>>> me an hour to explain what the problem was.
>>>
>> Polymorphism is the key principle and you don't need an OO language to
>> use it. Any language with function pointers can implement polymorphism.
>> A case in point is the z/OS C stdio runtime which supports many different
>> types of data source. fopen() is the factory function which populates the
>> read/write (virtual) function pointers in the FILE structure. There's no
>> reason why you can't write OO code in assembler. I see lots of assembler
>> code with constitutional logic littered throughout which call different
>> functions depending on some type which would benefit from an OO design.
>>
>> --
>> For IBM-MAIN subscribe / signoff / archive access instructions,
>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>>
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>



-- 
Windows. A funny name for a operating system that doesn't let you see
anything.

Maranatha! <><
John McKown

--
For IBM-MAIN subscribe / signoff / 

Re: Question about C++

2017-05-31 Thread David Crayford

Re-posted due to formatting issues:

I think I should have used the term object based for non-OO languages. 
Scope based finalization is a sweet spot of C++ with scoped based 
destructors. I'm coding a lot of Java at the moment and having to code 
finally blocks or use the try-with-resources statement is tedious. But 
my point was mainly about polymorphism and how it can be implemented in 
languages that have function pointers. Of course, in a language that has 
no destructors or finalization you have to explicitly call a destructor.


Here is a nifty piece of C++ code that wraps the C stdio FILE structure 
which implements RAII to call fclose() by using a implicit pointer 
operator! It's one of the many C++ features many people are not aware 
of. Props to Jerry Coffin who invented it.


class file {
typedef FILE *ptr;

ptr wrapped_file;
public:
file(std::string const , std::string const  = 
std::string("r")) :

wrapped_file(fopen(name.c_str(), mode.c_str()))
{ }

operator ptr() const { return wrapped_file; }

~file() { if (wrapped_file) fclose(wrapped_file); }
};

-

file f("myfile.txt", "w");

if (!f) {
   fprintf(stderr, "Unable to open file\n");
   return 0;
}

fprintf(f, "Hello world");


On 31/05/2017 9:06 PM, Charles Mills wrote:

There's no reason why you can't write OO code in assembler.

And there's no reason you could not write OO code by keying the bits in through 
a debugger.

The point of the OO constructs is not that there is no other way to do things. 
Obviously, any object program that can be produced by a compiler could have 
been written in HLASM.

The point of OO constructs is never having to say "was there something I was 
supposed to call when I was finished with this record (DSECT, struct, class, ...)?" 
What was its name? Where is the pointer to it? What are the calling parameters? Or worse, 
I just realized I am going to need a cleanup routine for this record. Now I have to go 
back and make sure that every piece of code that uses it gets modified to call the 
cleanup routine. You just delete the class and if it has a destructor, it gets called. 
Voila!

Charles


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of David Crayford
Sent: Tuesday, May 30, 2017 7:46 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Question about C++

On 30/05/2017 9:52 PM, Charles Mills wrote:

You're trying to scare the poor man!

After I learned OO, I realized the problem in trying to communicate the 
concepts.

- The easy-to-grasp explanations are stupid: Animal is a class. Dog and Cat are 
child classes of Animal. Fido is an instance of Dog. You could have an 
inherited public overridden method Speak() and say myAnimal.Speak() and if it 
were a Dog it would bark and if it were a Cat it would Meow ...

Agreed. Inheritance should generally be avoided anyway. It has it's place but 
composition should be preferred 9 times out of 10. Inheritance is tightly 
coupled and can become incomprehensible once it gets a few layers deep.


- The real problems that are solved by the significant features are too hard to 
explain in a simple tutorial. I solved a problem the other day with a very 
sparsely-implemented virtual polymorphic method -- but it would take me an hour 
to explain what the problem was.

Polymorphism is the key principle and you don't need an OO language to use it. 
Any language with function pointers can implement polymorphism.
A case in point is the z/OS C stdio runtime which supports many different types 
of data source. fopen() is the factory function which populates the read/write 
(virtual) function pointers in the FILE structure. There's no reason why you 
can't write OO code in assembler. I see lots of assembler code with 
constitutional logic littered throughout which call different functions 
depending on some type which would benefit from an OO design.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: HSM Backup to Disk

2017-05-31 Thread Robert Heffner
Moving HSM backup to disk is just one option we are looking at, we are also 
looking at VTS which I think is going to be the best solution for us.  I was 
told by our DASD vendor that HSM is architected to use tape for backup, and 
using disk can be harder to manage.  To implement a VTS would mean a simple 
recycle to get the 'real tape' backups to virtual tape, but I would still 
prefer to get the VTS on the floor a few months ahead if we can and let the 
tape backups fall off the end, then recycle what is left.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread David Crayford

Good spot!

class file {
typedef FILE *ptr;

ptr wrapped_file;
public:
file(std::string const , std::string const  = 
std::string("r")) :

wrapped_file(fopen(name.c_str(), mode.c_str()))
{ }

operator ptr() const { return wrapped_file; }

~file() { if (wrapped_file) fclose(wrapped_file); }
};

-

file f("myfile.txt", "w");

if (!f) {
   fprintf(stderr, "Unable to open file\n");
   return 0;
}

fprintf(f, "Hello world");


On 31/05/2017 9:36 PM, John McKown wrote:

On Wed, May 31, 2017 at 8:26 AM, David Crayford  wrote:


I think I should have used the term object based for non-OO languages.
Scope based finalization is a sweet spot of C++ with scoped based
destructors. I'm coding a lot of Java at the moment and having to code
finally blocks or use the try-with-resources statement is tedious. But my
point was mainly about polymorphism and how it can be implemented in
languages that have function pointers. Of course, in a language that has no
destructors or finalization you have to explicitly call a destructor.

Here is a nifty piece of C++ code that wraps the C stdio FILE structure
which implements RAII to call fclose() by using a implicit pointer
operator! It's one of the many C++ features many people are not aware of.
Props to Jerry Coffin who invented it.

|classfile {typedefFILE*ptr;ptr wrapped_file;public:file(std::string
const,std::string const =std::string("r")):wrapped_fil
e(fopen(name.c_str(),mode.c_str())){}operatorptr()const{re
turnwrapped_file;}~file(){if(wrapped_file)fclose(wrapped_file);}};
-
||file f("myfile.txt","w");if(!f){fprintf(stderr,"Unable to open
file\n");return0;}fprintf(f,"Hello world");|

​​

​It appears to me that the last section, containing code, does not have any
proper line breaks. I can't read it. And I don't know enough C++ to
reformat it. ​





--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


DFSORT TRAN=UTOL and codepages

2017-05-31 Thread R.S.

I use
OUTREC BUILD=(1,80,TRAN=UTOL)
to change uppercase to lowercase characters.
However it does not change the case for polish national characters 
(ąćęłńóśżź). I tried to use  LOCALE=PL_pl, but with no effect.


Is it possible to provide codepage information to UTOL or I have to use 
something like

FINDREP=(INOUT=(C'a',C'A'
for every character?

--
Radoslaw Skorupka
Lodz, Poland




==


   --
Treść tej wiadomości może zawierać informacje prawnie chronione Banku 
przeznaczone wyłącznie do użytku służbowego adresata. Odbiorcą może być jedynie 
jej adresat z wyłączeniem dostępu osób trzecich. Jeżeli nie jesteś adresatem 
niniejszej wiadomości lub pracownikiem upoważnionym do jej przekazania 
adresatowi, informujemy, że jej rozpowszechnianie, kopiowanie, rozprowadzanie 
lub inne działanie o podobnym charakterze jest prawnie zabronione i może być 
karalne. Jeżeli otrzymałeś tę wiadomość omyłkowo, prosimy niezwłocznie 
zawiadomić nadawcę wysyłając odpowiedź oraz trwale usunąć tę wiadomość 
włączając w to wszelkie jej kopie wydrukowane lub zapisane na dysku.

This e-mail may contain legally privileged information of the Bank and is 
intended solely for business use of the addressee. This e-mail may only be 
received by the addressee and may not be disclosed to any third parties. If you 
are not the intended addressee of this e-mail or the employee authorized to 
forward it to the addressee, be advised that any dissemination, copying, 
distribution or any other similar activity is legally prohibited and may be 
punishable. If you received this e-mail by mistake please advise the sender 
immediately by using the reply facility in your e-mail software and delete 
permanently this e-mail including any copies of it either printed or saved to 
hard drive.

mBank S.A. z siedzibą w Warszawie, ul. Senatorska 18, 00-950 Warszawa, 
www.mBank.pl, e-mail: kont...@mbank.plsąd Rejonowy dla m. st. Warszawy XII 
Wydział Gospodarczy Krajowego Rejestru Sądowego, nr rejestru przedsiębiorców 
KRS 025237, NIP: 526-021-50-88. Według stanu na dzień 01.01.2016 r. kapitał 
zakładowy mBanku S.A. (w całości wpłacony) wynosi 168.955.696 złotych.
   


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread John McKown
On Wed, May 31, 2017 at 8:26 AM, David Crayford  wrote:

> I think I should have used the term object based for non-OO languages.
> Scope based finalization is a sweet spot of C++ with scoped based
> destructors. I'm coding a lot of Java at the moment and having to code
> finally blocks or use the try-with-resources statement is tedious. But my
> point was mainly about polymorphism and how it can be implemented in
> languages that have function pointers. Of course, in a language that has no
> destructors or finalization you have to explicitly call a destructor.
>
> Here is a nifty piece of C++ code that wraps the C stdio FILE structure
> which implements RAII to call fclose() by using a implicit pointer
> operator! It's one of the many C++ features many people are not aware of.
> Props to Jerry Coffin who invented it.
>
> |classfile {typedefFILE*ptr;ptr wrapped_file;public:file(std::string
> const,std::string const =std::string("r")):wrapped_fil
> e(fopen(name.c_str(),mode.c_str())){}operatorptr()const{re
> turnwrapped_file;}~file(){if(wrapped_file)fclose(wrapped_file);}};
> -
> ||file f("myfile.txt","w");if(!f){fprintf(stderr,"Unable to open
> file\n");return0;}fprintf(f,"Hello world");|
>
> ​​
​It appears to me that the last section, containing code, does not have any
proper line breaks. I can't read it. And I don't know enough C++ to
reformat it. ​



-- 
Windows. A funny name for a operating system that doesn't let you see
anything.

Maranatha! <><
John McKown

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread David Crayford
I think I should have used the term object based for non-OO languages. 
Scope based finalization is a sweet spot of C++ with scoped based 
destructors. I'm coding a lot of Java at the moment and having to code 
finally blocks or use the try-with-resources statement is tedious. But 
my point was mainly about polymorphism and how it can be implemented in 
languages that have function pointers. Of course, in a language that has 
no destructors or finalization you have to explicitly call a destructor.


Here is a nifty piece of C++ code that wraps the C stdio FILE structure 
which implements RAII to call fclose() by using a implicit pointer 
operator! It's one of the many C++ features many people are not aware 
of. Props to Jerry Coffin who invented it.


|classfile {typedefFILE*ptr;ptr wrapped_file;public:file(std::string 
const,std::string const 
=std::string("r")):wrapped_file(fopen(name.c_str(),mode.c_str())){}operatorptr()const{returnwrapped_file;}~file(){if(wrapped_file)fclose(wrapped_file);}}; 
- 
||file f("myfile.txt","w");if(!f){fprintf(stderr,"Unable to open 
file\n");return0;}fprintf(f,"Hello world");|



On 31/05/2017 9:06 PM, Charles Mills wrote:

There's no reason why you can't write OO code in assembler.

And there's no reason you could not write OO code by keying the bits in through 
a debugger.

The point of the OO constructs is not that there is no other way to do things. 
Obviously, any object program that can be produced by a compiler could have 
been written in HLASM.

The point of OO constructs is never having to say "was there something I was 
supposed to call when I was finished with this record (DSECT, struct, class, ...)?" 
What was its name? Where is the pointer to it? What are the calling parameters? Or worse, 
I just realized I am going to need a cleanup routine for this record. Now I have to go 
back and make sure that every piece of code that uses it gets modified to call the 
cleanup routine. You just delete the class and if it has a destructor, it gets called. 
Voila!

Charles


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of David Crayford
Sent: Tuesday, May 30, 2017 7:46 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Question about C++

On 30/05/2017 9:52 PM, Charles Mills wrote:

You're trying to scare the poor man!

After I learned OO, I realized the problem in trying to communicate the 
concepts.

- The easy-to-grasp explanations are stupid: Animal is a class. Dog and Cat are 
child classes of Animal. Fido is an instance of Dog. You could have an 
inherited public overridden method Speak() and say myAnimal.Speak() and if it 
were a Dog it would bark and if it were a Cat it would Meow ...

Agreed. Inheritance should generally be avoided anyway. It has it's place but 
composition should be preferred 9 times out of 10. Inheritance is tightly 
coupled and can become incomprehensible once it gets a few layers deep.


- The real problems that are solved by the significant features are too hard to 
explain in a simple tutorial. I solved a problem the other day with a very 
sparsely-implemented virtual polymorphic method -- but it would take me an hour 
to explain what the problem was.

Polymorphism is the key principle and you don't need an OO language to use it. 
Any language with function pointers can implement polymorphism.
A case in point is the z/OS C stdio runtime which supports many different types 
of data source. fopen() is the factory function which populates the read/write 
(virtual) function pointers in the FILE structure. There's no reason why you 
can't write OO code in assembler. I see lots of assembler code with 
constitutional logic littered throughout which call different functions 
depending on some type which would benefit from an OO design.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN



--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


PIC Z is for zero suppression was Re: A slight regression

2017-05-31 Thread Clark Morris
[Default] On 30 May 2017 12:35:46 -0700, in bit.listserv.ibm-main
peter.far...@broadridge.com (Farley, Peter x23353) wrote:

>Scott,
>
>That exchange between John and I (around April 7) was about calling C library 
>functions directly from COBOL.  It works if you use a static call (COBOL 
>literal for the entry point name in UPPER CASE, NODYNAM COBOL compiler option) 
>because the C library function load modules (in CEE.SCEELKED) have an external 
>reference to the LE initialization subroutine CEESG003 which will do C 
>language startup initialization in the enclave.  A dynamic COBOL CALL to a C 
>library function (variable name in the CALL or DYNAM COBOL compiler option) 
>will not work unless you manually use an INCLUDE SYSLIB(CEESG003) link edit 
>control card for your link step to get the C language initialization 
>performed, and include CEE.SCEELKED in the link edit SYSLIB DD.
>
>Your code example below should "just work" in terms of getting the C language 
>initialization done because your C subroutine will have an external reference 
>to CEESG003, but passing strings and integers is trickier, because the C 
>language uses (mostly) "pass by VALUE" instead of the COBOL default of "pass 
>by REFERENCE (i.e., pointers)".  You have to carefully use the BY REFERENCE 
>and BY VALUE attributes for the COBOL USING variables.  Integers (and probably 
>floats/doubles as well) must be BY VALUE.  Any structures or arrays (including 
>strings!) or function pointers must be BY REFERENCE.
>
>COBOL does have PICTURE usage type "Z" for zero-terminated strings, so you 
>don't have to use the STRING verb to construct constant strings with a 
>zero-byte terminator to call C modules.  I haven't experimented with moving 
>"normal" COBOL strings (PIC X) to a PIC Z variable, so I do not know if that 
>would work properly.

Picture type Z is for zero suppression so in a PIC Z, if 0 is
moved to it the result is 5 blanks, if 01234 is moved the result is
blank1234 and if 12345 is moved the result is 12345.  I don't know oof
anyway to specify a zero terminated field.

Clark Morris

>
>HTH
>
>Peter
>
>-Original Message-
>From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On 
>Behalf Of scott Ford
>Sent: Tuesday, May 30, 2017 2:27 PM
>To: IBM-MAIN@LISTSERV.UA.EDU
>Subject: Re: A slight regression
>
>John,
>
>I didnt realize you could call C library functions directly, very cool  , here 
>is what i would like to do:
>
> FILE SECTION.
>   WORKING-STORAGE SECTION.
>   77 TESTSTR   PIC X(30) VALUE SPACES.
>   77 VAR1  PIC S9(9) BINARY VALUE 5.
>   PROCEDURE DIVISION.
>   -MAIN.
>  * MOVE 1 TO P1.
>  * DISPLAY 'P1: ' P1
>  * CALL 'CFUNC' USING P1 RETURNING P2
>  * DISPLAY 'P1: ' P1
>  * DISPLAY 'P2: ' P2
>STRING 'TEST STRING' ,
>   LOW-VALUE
>DELIMITED BY SIZE INTO TESTSTR
>DISPLAY 'CALL CENTRY USING: ' TESTSTR
>CALL 'CENTRY' USING  TESTSTR.
>GOBACK.
>
>
>
>#include 
>#include 
>#include 
>void CENTRY(char* mystring)
>{
>  printf("my string: %s \n",mystring);
>}
>
>I am trying to understand how to perform the call and pass a string and or a 
>integer ...
>
>Thanks John..
>
>Regards.
>Scott
>
>On Tue, May 30, 2017 at 2:19 PM, John McKown 
>wrote:
>
>> On Tue, May 30, 2017 at 1:07 PM, scott Ford  wrote:
>>
>> > All:
>> >
>> > I saw a thread between Peter Fairley and John  in April, this year
>> speaking
>> > about a cobol program calling C ..I am in the same board but did not 
>> > see the C code. Can some one help me out and point me to the C 
>> > routine or function ?
>> >
>>
>> ?Minor example at:
>> https://gist.github.com/JohnArchieMckown/5b973d46108bd24e0c6f9233c9617
>> 6b0
>>
>> Calls the C subroutines: cuserid(), strlen(). and sscanf(). I don't 
>> have a C compiler, so I don't have an example of any "user written" C code.
>>
>>
>>
>> >
>> > Thanks and I appreciate it
>> >
>> > --
>> >
>> > *IDMWORKS *
>> >
>> > Scott Ford
>> >
>> > z/OS Dev.
>> >
>>
>>
>> --
>> Windows. A funny name for a operating system that doesn't let you see 
>> anything.
>>
>> Maranatha! <><
>> John McKown
>>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread David Crayford

On 31/05/2017 8:13 AM, Steve Smith wrote:

Eventually, the big problem with OOP is designing an intelligent class
hierarchy to solve a particular problem.  And that is where so many go
wrong.  The real world of applications rarely comes up with something as
obvious as Thing: Animal/Vegetable/Mineral. Animal: Cat/Dog.


I would argue that deep class hierarchies are a bad code smell. I would 
advise any wannabe C++ developer to get a copy of "Design Patterns" by 
the gang of four.
It was written in 1994 but still stands strong today. It emphasizes 
composition over inheritance and it's legacy can be seen today in 
runtimes like the Java JRE.
As you say, language semantics are secondary to good design and that 
book is a classic that changed the way the industry thought about OOP 
based up experience.



And then you can get into templates, and whatever new & crazy stuff they've
thought of recently.  It's a whole new world, lots of fun, but it gets a
long long way away from what you're probably used to in assembly (or C for
that matter).  But again, a subset of C++ is useful and valuable; you don't
have to (and it's probably insane to) use every feature.

sas

On Tue, May 30, 2017 at 12:18 PM, Kirk Wolf  wrote:


We use a small subset of C++ (better C) on z/OS:

classes (encapsulation)  (but very little use of inheritance)
RIAA
exceptions
better type checking
improved syntax (like late declaration of variables)
inlining of functions in class header  (and very little use of function
macro)


Kirk Wolf
Dovetailed Technologies
http://dovetail.com

On Tue, May 30, 2017 at 7:22 AM, David Crayford 
wrote:


This might bewilder you some more because C++ is a tricky language for a
beginner. It''s a simple thin wrapper class around C stdio that provides
RAII and some return value checks that throw exception when errors occur.
If you can work this out you're well on your way to being competent. It's
mainly meant as a demonstrator for constructors/destructors which are
fundamental to C++ programming.

#include 
#include 
#include 
#include 

class File
{
public:
 // default constructor
 File() : m_file( 0 ) {}

 // constructor - opens the file
 File( const std::string & filename, const std::string & mode )
 : m_file( 0 )
 {
 std::cout << "constructor\n";
 open( filename, mode );
 }

 // move constructor - takes ownership of the underlying file object
 File( File && rhs ) : m_file(0)
 {
 std::cout << "move constructor\n";
 m_file = rhs.m_file;
 rhs.m_file = 0;
 }

 // destructor
 ~File()
 {
 close();
 }

public:
 // opens a file
 void open( const std::string & filename, const std::string & mode )
 {
 std::cout << "opening file " << filename << "\n";
 m_file = fopen( filename.c_str(), mode.c_str() );
 if (!m_file) throw std::runtime_error( "Error opening file: " +
std::string( strerror( errno ) ) );
 }

 // closes the files
 void close()
 {
 if (m_file)
 {
 std::cout << "closing file\n";
 fclose( m_file );
 m_file = 0;
 }
 }

 // reads from the file
 int read( void * buffer, size_t size )
 {
 return fread( buffer, 1, size, m_file );
 }

 // writes to the file
 int write( const void * buffer, size_t size )
 {
 int bytesWritten = fwrite( buffer, 1, size, m_file );
 if (bytesWritten == 0) // I/O error
 {
 throw std::runtime_error( std::string( "Error writing to

file:

" + std::string( strerror( errno ) ) ) );
 }
 return bytesWritten;
 }

private:
 FILE * m_file;  // file handle
};

// factory function to demonstrate change of ownership
File openFile( const std::string filename, const std::string & mode )
{
 File file( filename, mode );
 return file;
}

int main( int argc, char * argv[] )
{
 try
 {
 // open the files
 File input = openFile( "DD:INPUT", "rb, type=record, noseek" );
 File output( "DD:OUTPUT", "wb, type=record" );
 // copy the input file to the output file
 size_t bytesRead;
 char buffer[32768];
 while ( ( bytesRead = input.read( buffer, sizeof buffer ) ) )
 {
 output.write( buffer, bytesRead );
 }
 // < destructors run here when the file objects go out of

scope

 }
 catch (std::exception & e)
 {
 std::cout << e.what() << "\n";
 }
 return 0;

}



On 30/05/2017 4:32 AM, Steve Beaver wrote:


Does anyone have a complete piece of C++ code that runs under MVS or
Linux that I can study?  99% of the stuff I write is HLASM and to a

point I

find C++ bewildering.

TIA

Steve

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email 

Re: Question about C++

2017-05-31 Thread Charles Mills
> There's no reason why you can't write OO code in assembler.

And there's no reason you could not write OO code by keying the bits in through 
a debugger.

The point of the OO constructs is not that there is no other way to do things. 
Obviously, any object program that can be produced by a compiler could have 
been written in HLASM.

The point of OO constructs is never having to say "was there something I was 
supposed to call when I was finished with this record (DSECT, struct, class, 
...)?" What was its name? Where is the pointer to it? What are the calling 
parameters? Or worse, I just realized I am going to need a cleanup routine for 
this record. Now I have to go back and make sure that every piece of code that 
uses it gets modified to call the cleanup routine. You just delete the class 
and if it has a destructor, it gets called. Voila!

Charles


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of David Crayford
Sent: Tuesday, May 30, 2017 7:46 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Question about C++

On 30/05/2017 9:52 PM, Charles Mills wrote:
> You're trying to scare the poor man!
>
> After I learned OO, I realized the problem in trying to communicate the 
> concepts.
>
> - The easy-to-grasp explanations are stupid: Animal is a class. Dog and Cat 
> are child classes of Animal. Fido is an instance of Dog. You could have an 
> inherited public overridden method Speak() and say myAnimal.Speak() and if it 
> were a Dog it would bark and if it were a Cat it would Meow ...

Agreed. Inheritance should generally be avoided anyway. It has it's place but 
composition should be preferred 9 times out of 10. Inheritance is tightly 
coupled and can become incomprehensible once it gets a few layers deep.

> - The real problems that are solved by the significant features are too hard 
> to explain in a simple tutorial. I solved a problem the other day with a very 
> sparsely-implemented virtual polymorphic method -- but it would take me an 
> hour to explain what the problem was.

Polymorphism is the key principle and you don't need an OO language to use it. 
Any language with function pointers can implement polymorphism. 
A case in point is the z/OS C stdio runtime which supports many different types 
of data source. fopen() is the factory function which populates the read/write 
(virtual) function pointers in the FILE structure. There's no reason why you 
can't write OO code in assembler. I see lots of assembler code with 
constitutional logic littered throughout which call different functions 
depending on some type which would benefit from an OO design.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Question about C++

2017-05-31 Thread Charles Mills
See the example that @David Crayford posted on this thread on Tuesday. Great 
intro to some basic concepts.

Charles


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of scott Ford
Sent: Tuesday, May 30, 2017 7:58 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Question about C++

Guys,

Where does this old Dino find readable examples in OO programming say in
c++?  I am trying to learn it.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: DFSORT with empty outputs

2017-05-31 Thread Elardus Engelbrecht
Sri h Kolusu wrote:

>>>Is there a DFSORT or ICETOOL statement where the output contains headers 
>>>plus a line saying 'No selected records found' if nothing selected is found?

>It can be done , however I need a few more details.

First thing first, many thanks for offering help.


>1. How are you selecting the data? (using INCLUDE/OMIT COND or OUTFIL 
>INCLUDE/OMIT ?)

I am mostly using ICETOOL with both these two sets of statements or only with 
one, like this example with INCLUDE COND:

(PS - fields with @ are replaced by actual contents)

SORTFROM(INDD) TO(TEMP0003) USING(REST)
DISPLAY FROM(TEMP0003) LIST(PRINT3R) - 
NOCC  -
WIDTH(500)-
BETWEEN(2)-
TITLE('@PREFIX - @SYSTM: Active Ids') -
DATE(4MD/)-
TIME(24:) -
PAGE  -
BLANK -
ON(NUM,N05)   HEADER('NR')   - 
ON(10,8,CH)   HEADER('User id')  - 
ON(79,20,CH)  HEADER('User Name')- 
ON(100,8,CH)  HEADER('Dflt Group')   - 
ON(19,10,CH)  HEADER('Created')  - 
ON(118,10,CH) HEADER('Last Used') 

OCCUR  FROM(TEMP0003) LIST(PRINT3T) -   
   NOCC -   
   WIDTH(500)   -   
   ON(78,1,CH)  HEADER('Active Ids') -  
   ON(VALCNT,N05)   HEADER('Count') 

//RESTCNTL   DD * 
 SORT FIELDS=(10,8,CH,A)  
 INCLUDE COND=(5,4,CH,EQ,C'0200',AND, 
   54,4,CH,NE,C'YES ',AND,
   118,10,CH,NE,C'  ',AND,
   118,10,CH,NE,19,10,CH,AND, 
   100,8,CH,EQ,C'@GROEP',AND, 
   10,3,CH,EQ,C'@PREFIX') 

With these ICETOOL statements, when there is nothing I get this lame output:


* Top of Data *
XYZ - SYSTEM: Active Ids2017/05/3113:37:55 
   
NR  User id   User Name Dflt Group  Created
--      --  -- 
Active IdsCount
--   --
 Bottom of Data ***

... resulting in unneeded queries from reviewers of these reports.


>2. What is the LRECL and RECFM of the dataset?

It should not matter, but output is generally LRECL=500 and RECFM=FB (see NOCC 
in above example)
Input for this specific example is a RACF Unloaded DB. RECFM=VB, LRECL=4096.

I am also using SMF unloaded dataset from IRRADU00 (LRECL=12288, RECFM=VB) as 
well other SMF data and other datasets.


>3. Does the header already exist in the input file and is it the first 2 
>records in the file? or can this be generated?

No. I prefer raw data without headers as input, so I can add headers at a later 
stage like this ICETOOL example above or simply omit headers for sending over 
as a CSV file.

Many thanks again!

Groete / Greetings
Elardus Engelbrecht

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: SDSF in Batch

2017-05-31 Thread John Dawes
Sri,

I tried out your example and it worked like a charm.  Great stuff.  Thanks for 
sharing this with us.


On Tue, 30/5/17, Sri h Kolusu  wrote:

 Subject: Re: SDSF in Batch
 To: IBM-MAIN@LISTSERV.UA.EDU
 Received: Tuesday, 30 May, 2017, 3:11 PM
 
 Steely Mark,
 
 Assuming you always have more than 1 job to
 extract in the DA queue, you 
 can use SDSF
 block commands  (//X - //) and extract the entire log. 
 You 
 can use utility of choice ( I used
 SORT) to extract out the contents you 
 like.
 Some thing like this
 
 //**
 //* DELETE IF OUTPUT DATASET EXISTS       
                     *
 //**
 //STEP0100 EXEC PGM=IEFBR14 
 //DD01     DD  DSN=,
 
 //            
 DISP=(MOD,DELETE),UNIT=SYSDA, 
 //       
      SPACE=(TRK,(1,0),RLSE) 
 //* 
 //**
 //* EXTRACT THE ENTIRE JOB OUTPUTS IN DA FOR
 PREFIX 'CICS'     *
 //* USING SDSF
 BLOCK COMMANDS (//X - //)                      
 *
 //**
 //STEP0200 EXEC
 PGM=SDSF,PARM='++30,256' 
 //ISFOUT 
  DD SYSOUT=* 
 //SYSUDUMP DD SYSOUT=* 
 //SYSPRINT DD SYSOUT=* 
 //SYSTSPRT DD SYSOUT=* 
 //SYSOUT   DD SYSOUT=* 
 //DATAOUT  DD DSN=,
 
 //           
 DISP=(NEW,CATLG,DELETE), 
 //         
   SPACE=(CYL,(25,25),RLSE), 
 //       
     RECFM=FB,LRECL=133,BLKSIZE=0 
 //ISFIN    DD * 
 PRE CICS*
 
 DA 
 PRINT FILE DATAOUT 
 FIND 'CICS' 
 ++//X 
 FIND 'CICS' LAST 
 ++//
 
 PRINT CLOSE 
 END 
 /*
 //**
 //* EXTRACT THE JESMSGLG FOR EACH JOB LOOKING
 FOR THE TIME     *
 //**
 //STEP0300 EXEC PGM=SORT 
 //SYSOUT   DD SYSOUT=* 
 //SORTIN   DD
 DISP=SHR,DSN= 
 //SORTOUT  DD SYSOUT=* 
 //SYSIN    DD * 
   OPTION
 COPY 
   INCLUDE COND=(2,2,ZD,EQ,NUM,AND,
 
                
 4,1,CH,EQ,C'.',AND, 
          
       5,2,ZD,EQ,NUM,AND, 
          
       7,1,CH,EQ,C'.',AND, 
    
             8,2,ZD,EQ,NUM) 
 /*
 
 P.S : The block command will
 fail if you just have 1 active job in the DA 
 queue.
 
 Thanks,
 Kolusu
 
 
 
 From:   "Steely.Mark" 
 To:     IBM-MAIN@LISTSERV.UA.EDU
 Date:   05/30/2017 10:17 AM
 Subject:        SDSF in Batch
 Sent by:        IBM Mainframe Discussion
 List 
 
 
 
 I know this has been discussed before but I
 can't find anything that I am 
 looking
 for.
 
 The only thing I found
 close was SDSFEXT from file 313 on the CBTAPE.
 
 I would like the batch SDSF
 job to perform PREFIX CICS*.  Then DA.  Then 
 from that list print the JESMSGLG from each one
 listed.
 
 I have been able to
 do this successfully  for 1 job.
 
 Any help would be appreciated.
 
 Thanks
 
 
 --
 For IBM-MAIN subscribe / signoff / archive
 access instructions,
 send email to lists...@listserv.ua.edu
 with the message: INFO IBM-MAIN
 
 
 
 
 
 
 --
 For IBM-MAIN subscribe / signoff / archive
 access instructions,
 send email to lists...@listserv.ua.edu
 with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Looks like lots of folks in marketing said thanks but no thanks

2017-05-31 Thread R.S.

W dniu 2017-05-30 o 17:27, Paul Gilmartin pisze:

[...]

https://www.ted.com/talks/eric_whitacre_a_virtual_choir_2_000_voices_strong

...not symphony, but still remote collaboration.

Timothy Sipples quoted


A symphony can hardly be performed with everyone working remotely

The collaboration is not in real time.  It's like getting
a thousand postcards and taping them together into a collage.
Realtime remote jamming infrastructure is still battling
with the speed of light, but in a few decades modulation of
entangled atoms separated by hundreds of kilometers will
probably trickle down into the high-level musician's home
studio infrastructure.


Interesting pre-pre-pre-Friday topic.  I take SR's prohibition of
superluminal communication as absolute.  But can a choir be
synchronized without transmitting information from one member
to another?  This seems to reflect the assumption for quantum
computing.


It is not like choir, it's more like date (boy and girl meeting). While 
can be done remotely, the direct presence is much more interesting.


Of course, everything depends on details. As Lucas mentioned, the value 
from meetings require the team to be "ethusiastic" or just mitivated to 
do some common (team) work. Otherwise this won't play. Like a date with 
wrong person.
The same apply to work in office. Open space is the worst case for 
concetration, however lack of direct presence of coworkoers can also be 
an obstacle, not to mention not-good-enough connection, laptop display 
instead of two big LCD monitors, etc.

As usually, YMMV.

(Disclaimer: my Enlgish is poor, some nuances can be lost in translation. )

--
Radoslaw Skorupka
Lodz, Poland




==


   --
Treść tej wiadomości może zawierać informacje prawnie chronione Banku 
przeznaczone wyłącznie do użytku służbowego adresata. Odbiorcą może być jedynie 
jej adresat z wyłączeniem dostępu osób trzecich. Jeżeli nie jesteś adresatem 
niniejszej wiadomości lub pracownikiem upoważnionym do jej przekazania 
adresatowi, informujemy, że jej rozpowszechnianie, kopiowanie, rozprowadzanie 
lub inne działanie o podobnym charakterze jest prawnie zabronione i może być 
karalne. Jeżeli otrzymałeś tę wiadomość omyłkowo, prosimy niezwłocznie 
zawiadomić nadawcę wysyłając odpowiedź oraz trwale usunąć tę wiadomość 
włączając w to wszelkie jej kopie wydrukowane lub zapisane na dysku.

This e-mail may contain legally privileged information of the Bank and is 
intended solely for business use of the addressee. This e-mail may only be 
received by the addressee and may not be disclosed to any third parties. If you 
are not the intended addressee of this e-mail or the employee authorized to 
forward it to the addressee, be advised that any dissemination, copying, 
distribution or any other similar activity is legally prohibited and may be 
punishable. If you received this e-mail by mistake please advise the sender 
immediately by using the reply facility in your e-mail software and delete 
permanently this e-mail including any copies of it either printed or saved to 
hard drive.

mBank S.A. z siedzibą w Warszawie, ul. Senatorska 18, 00-950 Warszawa, 
www.mBank.pl, e-mail: kont...@mbank.plsąd Rejonowy dla m. st. Warszawy XII 
Wydział Gospodarczy Krajowego Rejestru Sądowego, nr rejestru przedsiębiorców 
KRS 025237, NIP: 526-021-50-88. Według stanu na dzień 01.01.2016 r. kapitał 
zakładowy mBanku S.A. (w całości wpłacony) wynosi 168.955.696 złotych.
   


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Component IDs?

2017-05-31 Thread John Eells

Phil Smith wrote:


In z/VM this stuff is pretty rigorous. In z/OS, not so much. Yet due to SMP/E 
the need for a unique component ID is clear even for vendor stuff. How many VM 
ISV products use an assigned ID? Not many that I can think of. Some/many/most 
use *an* ID, but was it assigned by IBM?


This has little to do with SMP/E, actually, and more to do with avoiding 
inadvertent naming collisions, particularly in concatenations and things 
like them. At the time (O)SMP was created, z/OS UNIX did not exist, nor 
did the notion of same-named parts in different directories in the same 
file system selected by different environment variables or other means 
that render the duplicate names irrelevant. Naming collisions that 
happen by accident rarely produce good results. The original designers 
just added some rigor to make them harder to create, and that is also 
the root reason for the corporate standard we have today.


We have a lot more relief in the z/OS topology these days, and more 
variations to account for.


Any minute now, someone will probably jump in to say those designers 
should have foretold the future more accurately and designed something 
completely flexible that would work with things yet to be invented, but 
let's face it: Sometimes our crystal ball is cloudy. As Yogi Berra and 
Neils Bohr are both famously thought to have said, "Prediction is hard, 
especially about the future."


Also, SMP/E does nothing to prevent naming collisions when you install 
products having them in different zones. For example, it used to be the 
case (and might still be) that there are both MVS and IMS macros named 
WTO. With MVS products in one zone and IMS products in another, and the 
very different contexts in which "WTO" was or is used, it appears that 
this is not a problem.


And, yes, names like WTO and SYS1.LINKLIB, and many others, are 
"grandfathered" exceptions to the naming standard we use today.


--
John Eells
IBM Poughkeepsie
ee...@us.ibm.com

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Displacement of ASG View Direct and PRO/JCL

2017-05-31 Thread Bill Johnson
 blockquote, div.yahoo_quoted { margin-left: 0 !important; border-left:1px 
#715FFA solid !important; padding-left:1ex !important; background-color:white 
!important; } We replaced CA view/deliver with the ASG products last year. It 
was very painful and time consuming with numerous issues that ASG was less than 
stellar in supporting. You get what you pay for. My suspicion is converting 
from ASG to CA would be easier and CA would provide the same excellent support 
that we receive from them on other CA products. YMMV.


Sent from Yahoo Mail for iPhone


On Wednesday, May 31, 2017, 11:59 AM, Steven Liston 
 wrote:

Do any members have exposure to displacement of ASG's View Direct and/or 
PRO/JCL products?

Looking for experience of the displacement and migration exercise and 
timeframes therein (which I expect for View Direct would be directly related to 
the number of docs stored in the current repository).

Expect PRO/JCL would be fairly straightforward but View Direct perhaps more 
challenging.


Regards.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN



--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Displacement of ASG View Direct and PRO/JCL

2017-05-31 Thread Steven Liston
Do any members have exposure to displacement of ASG's View Direct and/or 
PRO/JCL products?

Looking for experience of the displacement and migration exercise and 
timeframes therein (which I expect for View Direct would be directly related to 
the number of docs stored in the current repository).

Expect PRO/JCL would be fairly straightforward but View Direct perhaps more 
challenging.


Regards.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Looks like lots of folks in marketing said thanks but no thanks

2017-05-31 Thread Out The Darkness Just for All My Haters
Well I'm my opinion and not that it seems to really matter. I didn't sign
up for this.
How would any of you feel if your life and every move was available for A
or B or 5,000 others to see day after day for how long?
Really. How long has this gone on before you all.started really pressing me
for reactions?
I didn't sign no contract for this. I.do not get paid a single penny for
what I'm out through.
So who makes all the money by making sure my life is as miserable as
possible?
IBM, Apple, Metro PCS, Sprint, ATT, Brighthouse networks? How many deceived
me?
So Corporations get paid large amounts of money to A) Push people over the
edge with all the BS I am fed. Why? Ratings?
Is my health costing the state to much money? Cause I don't go to the Dr so
everyone is complaining about how much a life night take away some of the
billiions they have while I have to resort to foood stamps tomorrow to feed
my kids.
Keep your damn money and your acts where do I sign the dotted line at to
have my right to privacy back? My right to freedom of speech back?
You all get to state your opinions no matter how rude or derogatory they
are. Im the ass end of every post, video, news feed but oh no if I'm not
kidding everyones ass its hell to pay.
So, guess what I am over being your puppets. Let someone threaten your
life, fteedom, and civil rights to live in peace. Then let them threaten
your children. How many of you would still smile and kiss ass?
Cause none of you perfect corporate folks ever get upset or vent?
I'm gonna pull every device and router out of this house and get a plug in
a aLl pbone.
Because human slavery is still.illegal in my state and human slavery is
what you all have made of me.
What happens if one day the crap you all do costs a life? A childs life
from being bullied or maybe one day you push me to far? That nakes each one
of you sitting in your new homes with your sports car and fancy wives or
rich husbands no lesa of a murder than the one I live with.
Oh wait or is that another lie?
Because if what I read on him today is true you are all worse than murders
to know that and quietly stand back and watch it happen to me and my kids.
And if you made it up ask your selves how you feel about bringing a mom to
rock bottom taking her husband and kids with your stories lies and sales on
innocent people and their lives. Id be praying or begging Karma or the Lord
was a bit easier in you at judgement tine then the world of jerks out there
laughing and betting and making money off tormenting others.
Get what you can in now cause all the ways your all able to make money off
us goes to the dump tomorrow.
Try game day with no players. I didn't sign a contract to work free so
I.guess I wouldn't be breaking one one would I.
One last request. If your gonns deport me or cps is gonna take my children
with our even tellimg me stop posting it. There is not a dang thing that I
could do.to sstop it thats been proven.time.and time again.
You should all feel ashamed at what your pockets fillimg up has done to my
home anf lights. There isnt much better about you then me. Noe is there.

Ps stop with the im pregnante headlines. At 34 I had to chiose between
wanting anothef baby and my life and thar jokes tasteless.

Peace out

On May 30, 2017 10:00 PM, "Timothy Sipples"  wrote:

We're getting deep into the weeds here, but I'd like to point out that even
for a live symphonic performance it's technically possible, using today's
technologies and limits of physics, to split the orchestra in half and
still deliver an excellent live performance.

To illustrate how this works, let's suppose the two halves are Orchestra A
and Orchestra B. A is in Vienna, and B is in Tokyo, let's suppose. The
audience is sitting anywhere -- it can be a live concert broadcast, for
example. And let's suppose the conductor is also in Vienna with Orchestra
A, with high fidelity audio and video links, unidirectional from Vienna to
Tokyo. The conductor and Orchestra A start playing. Orchestra B starts
playing a fraction of a second later (assuming the piece calls for a
simultaneous start), guided by the same conductor and Orchestra A's musical
and other queues. The broadcast is transmitted, live, out of Tokyo from the
two feeds and carefully synchronized: one feed remote from Vienna, and one
local from Tokyo. As long as the transmission delay from Vienna to Tokyo
holds steady, everything works in this example

And as long as Orchestra A includes enough of the musicians so that
they don't need to rely on any musical or other cues from Orchestra B.
Orchestra B can, of course, rely on any/all cues from Orchestra A. In this
scenario they would be wearing earpieces or headphones, and they'd have a
video screen to watch the conductor and their fellow musicians in Orchestra
A. Maybe the members of Orchestra B would be wearing virtual reality
goggles.

Anyway, the point is that even with live performances, even with speed of
light transmission