Re: Anyone Using z10 Large Pages in anger

2010-08-18 Thread Henry Willard
Shane wrote:

 On Tue, 2010-08-17 at 13:27 -0500, Elpida Tzortzatos. wrote:

  The goal of every platform is to move to transparent use of large pages but
  that is a very high goal to achieve especially when the large page size is 
  1MB
  (256 contiguous 4k Frames). Implementation of large pages is much simpler
  and more flexible with smaller large page sizes but the complexity increases
  with larger large pages sizes.

 Much as I am a long time MVS bigot, it would be remiss not to point out
 that Linux supports various sized large pages across disparate
 architectures - none of them smaller than 1 Meg I would think.

Different processor architectures support a variety of pages sizes. For example,
Itanium or whatever it is called today has architected page sizes of 4K, 8K, 
16K,
64K, 256K, 1M, 4M, 16M, 64M, 256M, and 4G. Power supports 4K, 64K, and larger
implementation defined sizes such as 16M and 16G. I can


 Not to mention multiple (concurrent) sizes within particular
 architectures. I considered z/OS late to the party when this was
 announced.

Although Linux supports multiple sizes of larger pages, as a practical matter 
using
more than one is cumbersome, and I not sure what, if any, application does. 
Pools of
each size have to be preallocated.

In Linux page tables are not sharable, so applications with large shared memory
segments with a lot of processes attached to them, such as some relational data
bases, can chew up a lot of real memory with page tables to map the shared 
segments.

 Welcome, but late.
 And if you want to utilise this as a z/VM guest ??? - too bad. All the
 software and hardware is IBM proprietary - how is that acceptable ?

  I am glad you mentioned zLinux since as you can see the z/OS implementation
  is more flexible in some aspects especially given the 1MB large page size.
 
  When it comes to memory topology, our hypervisor (PR/SM) is aware but z/OS
  itself is agnostic as to hardware memory topology.

 I have to question this ambivalent attitude. If TLB hit ratio is such a
 major consideration, how can the possibility of allocation on a
 foreign book be even contemplated as acceptable ?.
 Even the current processors have shown susceptibility to performance
 impacts due to poor CP allocation at LPAR activation - are you prepared
 to accept that memory allocation won't be similarly impacted by poor
 decisions ?.

 Shane ...

 --
 For IBM-MAIN subscribe / signoff / archive access instructions,
 send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
 Search the archives at http://bama.ua.edu/archives/ibm-main.html

Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: I'm amazed

2010-07-27 Thread Henry Willard
Shane Ginnane wrote:

 I suspect IBM wants to keep the penguin colonies appropriately corralled.
 Hard to tout you can support hundreds/thousands of Linuses in a (native) LPAR
 environment. Does Power have a z/VM analogue ?.

Not the same functionality as z/VM. There is PowerVM which is the Power7 version
of the z LPAR code plus paging - PowerVM can page LPARs using a service LPAR to
do the I/O. Also Active Memory Sharing that allows LPARs to donate memory they
don't need to other LPARs.

The LPAR architecture for Power is such that the guests have to be aware, and it
often takes a little longer to get needed changes into the Linux distros



 Shane ...


h

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Significant Bits

2010-05-25 Thread Henry Willard
Paul Gilmartin wrote:

 On Tue, 25 May 2010 16:38:32 -0400, David Andrews wrote:

 On Tue, 2010-05-25 at 16:10 -0400, Tom Marchant wrote:
  The 68000 and its successors are big endian.
  They switched to PowerPC in 1994 and to i86 in 2006.
 
 Didn't PPC go both ways?  (I vaguely remember a talk by David Barnes a
 few years ago, where he mentioned the OS/2 PPC port making use of the
 mixed-endian-ness of PPC.)
 
 Yow!  I knew it was bimodal, but:

 http://en.wikipedia.org/wiki/PowerPC#Endian_modes

 In little-endian mode, the three lowest-order bits of the
 effective address are exclusive-ORed with a three bit value
 selected by the length of the operand. This is enough to
 appear fully little-endian to normal software.

 I suppose three lowest-order bits means the rightmost three
 bits in big-endian mode, and something somewhat different in
 little-endian.

Nope, it always means the three rightmost bits of an address. Bytes get
reordered when data is moved between memory and a register. The hardware
still runs big-endian.



 There's one bit that controls the endianness in supervisor
 state; another for problem state.

In the embedded version of the Power architecture, byte ordering is an
attribute of a page. Power is not the only chip architecture that supports
some sort of bi-endianess. Itanium, which is mainly little-endian, supports
big-endian memory references.



 --gil


Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: What am I missing on XPLINK(OSCALL(N)) ?

2010-05-21 Thread Henry Willard
Charles Mills wrote:

  If your assembler code expects the standard register conventions ...

 My understanding of XPL(OSCALL(N)) is that is says call the assembler
 routines the old way. Am I missing something?

 Charles


I believe the problem is that XPL(OSCALL(N)) says no stack, just a standard save
area, and the EDCPRLG macro assumes the old UPSTACK. Either use XPL(OSCALL(U))
or don't use the EDC macros.

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Putting system integrity at risk to save software charges

2010-04-12 Thread Henry Willard
George Henke wrote:

 Shadow from Data Direct does this painlessly.

 I am totally independent of this vendor, so I can be objective.

 But a former client of mine implemented their product several years ago and
 extended the life of their 2 GPP configure enormously with very little cost.

 The installation was transparent to their applications.

 All they did was install the product, reconfigure the ziip an the HMC panel,
 and they were off and running.

 If you are talking about high profile actuarial computations, check with the
 vendor, they are probably covered as well, since my former client is a
 leading insurance company in New Jersy.

According to their Chief Architect
http://blogs.datadirect.com/2009/07/setting-the-record-straight-datadirect-shadow-is-not-affiliated-with-neon-enterprise-software.html

that isn't what they do. They only run their own software as zIIP eligible SRBs.

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: z9 / z10 instruction speed(s)

2010-03-06 Thread Henry Willard
R.S. wrote:

 Edward Jaffe pisze:
 [...]
  People with PC-only experience are always astonished when I tell them
  about modern mainframe provisioning capabilities. They always assume
  when your hard drive fills up you need a new one or when your CPU is too
  slow you need a new one. What we do seems like magic to them.

 Yes, mainframe capabilities are excellent in this area. From the other
 hand they solve problems which exist only in mainframe world: CPU power
 adjustment. CPU shortage is bad thing on any platform, but mainframe is
 the only one where too much MIPS is not good. Why to downgrade a PC?
 The same apply to specialty processors.

That is not completely true. Some amount of Unix and even Windows enterprise 
software (and not from IBM) is licensed by the capacity on the machine.



 --
 Radoslaw Skorupka
 Lodz, Poland

 --
 BRE Bank SA
 ul. Senatorska 18
 00-950 Warszawa
 www.brebank.pl

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Does SAC 0 make PASN = HASN = SASN

2009-12-14 Thread Henry Willard
Joe Reichman wrote:

 It is A Stacking PC I was under impression that when PR executes at the end
 of the PC rtn the OS puts the environment back to the way it was before the
 PC rtn

 Was invoked

 The POST ASID is only a few instruction later don't know why the SYSUDUMP
 says PRIMARY NOT EQUAL HOME


If the PASN is not equal to the HASN, what are they?

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: How to get a dump from a failing SRB

2009-12-10 Thread Henry Willard
ec wrote:

 I have an SRB scheduled thru IEAMSCHD. If it abends, I get the abend
 code in the comp, code and rsn fields. However I do not get any dump.
 Is there any method to get a dump for the failing SRB ?

DUMPX from the FRR (my preference). SLIP

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Clues on using C++ prelink * lked for first time

2009-12-07 Thread Henry Willard
Charles Mills wrote:

 I've got my first mainframe C++ application. It runs under Windows.
 (Obviously, that's not the same as running under z/OS, but the point is it's
 a complete program. My concern at this point is getting it to link, not
 run.) It compiles cleanly under z/OS C++. I have long names and want the
 load module in a PDS, so I'm running the compile/pre-link/link proc. There
 are eight object modules from eight source files in an HFS path. I'm good up
 to that point. Questions:



 1.   How do I specify the input to the prelinker? I tried LIBRARY with a
 DD name pointing to my object path and all of the object files listed in
 parentheses. If I do that, the prelinker runs to completion with a zero
 return code and nothing in SYSPRINT, but the link fails on a SYSLIN that is
 apparently empty (wrong length record, that sort of thing). SYSLIN is the
 same dataset as the prelink SYSMOD. How do I know if the prelinker actually
 did anything? My guess is that it did not. (SYSMOD specfies FB/80/3200 and
 SYSLIN lets it default.)

 2.   If I specify INCLUDE with a DD pointing to the main() object module
 and LIBRARY with a DD for everything else, I get a warning of unresolved
 extrns, but it still runs to a zero completion, and I still get the same
 error out of the link editor.



 Any clues? Is the prelinker documented anywhere other than the C++ User's
 Guide? Thanks,



 Charles Mills

It is probably easiest to do this from a Unix Service shell using the c++
command. See the description of the c89 command in Unix System Services Command
Reference, and in particular the prefix_STEPS environment variable. It has been
a long time, but I believe if the target of the link is a PDS, the prelinker is
invoked automatically even without the prefix_STEPS environment variable.

Regards.
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: EZASMI no data on READ

2009-11-17 Thread Henry Willard
Joe Reichman wrote:

 Hi
 I am running a cocurrent server with multiple connections/ports
 When I connect on my first socket/port
 I am able to later on read data as my logic has the read waiting for
 TCP/IP
 To post the ECB whenever the client
 Sends data and the read completes
 The second connection the send immeaditly follows the connect and my
 Read does complete but there is nothing in the buffer (binary zeros)
 It was my understanding that all sockets are in blocking mode thus
 If a client does a send before I able to do a read TCP/IP will hold up
 the works
 As a sidebar would anyone know what the difference is between a read
 and a recv/recvfrom

recv and recvfrom are part of the Berkeley socket interface at least as
defined on Unix systems. However, on Unix (including z/OS Unix) there is
essentially no difference between read and recv, and they can be used
interchangeably on socket descriptors. The same is true with send and
write. On Windows sockets you have to use recv and send because as I
recall a Windows socket descriptor is a very different thing from a file
handle.

recvfrom and sendto are usually used for datagram sockets and although
they can be used for stream sockets as well. recvfrom takes additional
parameters for a sockaddr structure which contains the address of the
sender when recvfrom returns.



 Thankx in advance

 Sent from my iPhone

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Final Conlusions on Concurrenrt Server

2009-11-03 Thread Henry Willard
Shmuel Metz , Seymour J. wrote:

 In 01ca5b6c$532d3e30$f987ba...@net, on 11/01/2009
at 10:26 PM, Joe Reichman joereich...@optonline.net said:

 Here are my Final Conclusions These can only be one Active Conversation
 between a Client and Server on a port (if its between two different
 machines)

 If the client is using multiple port numbers then it should be able to
 sustain multiple conversations with a single server. TCP/IP does not allow
 concurrent multiple conversations between a single src-IP:port dst-IP port
 pair.

Actually, technically speaking, TCP/IP has no concept of a conversation.
TCP/IP provides a reliable point to point connection over which you can have
as many conversations as you want.



 --
  Shmuel (Seymour J.) Metz, SysProg and JOAT
  ISO position; see http://patriot.net/~shmuel/resume/brief.html
 We don't care. We don't have to care, we're Congress.
 (S877: The Shut up and Eat Your spam act of 2003)

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: EZASMI Concurrent Server cann't handle mutiple open connections in the same port

2009-10-28 Thread Henry Willard
Joe Reichman wrote:

 Hi,



  All regarding my earlier inquiry can anyone correct me if I am wrong



 I don't think you can have multiple open connections ( in the process of
 read and writes ) on the same port/same ip ??


Typically all connections on the server or listening side are to the same
port and IP address. Each connection has its own socket which is created by
accept or equivalent. A connection is defined by the IP/port addresses of
both endpoints. An attempt to bind a socket to a port that is in use by
another connection will fail.

Having used both the EZA and BPX socket interfaces, I much prefer the
latter. The BPX interface is not only easier to use, but more powerful. Plus
I believe these days the EZA code uses the BPX interface. If your server is
running authorized, you can use most of the BPX socket interfaces in SRB
mode.

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: IBM C header files

2009-10-19 Thread Henry Willard
Pierre Fichaud wrote:

 Folks,
 I've been hired to implement SSL socket calls in an existing z/OS
 product. The IBM SSL API is in C. I'm changing the TCB structure to have
 2 listeners, one TCP/IP and the other SSL. They listen on different ports.
 I've added a TCB layer and so have had to use the pthread API calls.
 I've defined a structure with a variable in it defined as :

 pthread_t   *thrd;

 My thinking was that if I included pthread.h ( as the doc states for any
 of the pthread API calls) that I would get  clean compile.

 Such is not the case. I get the following message:

 ERROR CCN3045 @PRF01.SSL.C(NEWL05):324   Undeclared identifier pthread_t.

 My includes in the C source are as follows:

 #include time.h
 #include types.h
 #include socket.h
 #include in.h
 #include pthread.h
 #include stdio.h
 #include stdlib.h

 and my SYSLIB concatenation in the compile JCL is :

 11 //SYSLIB  DD   DISP=SHR,DSN=USERID.H
X/SYSLIB   DD  DSNAME=LIBPRFX..SCEEH.H,DISP=SHR
IEFC653I SUBSTITUTION JCL - DSNAME=CEE.SCEEH.H,DISP=SHR
 12 //DD   DISP=SHR,DSN=ISV.DEV.H
X/ DD  DSNAME=LIBPRFX..SCEEH.SYS.H,DISP=SHR
IEFC653I SUBSTITUTION JCL - DSNAME=CEE.SCEEH.SYS.H,DISP=SHR
 13 //DD   DISP=SHR,DSN=CEE.SCEEH.H
 14 //DD   DISP=SHR,DSN=CEE.SCEEH.SYS.H
 15 //DD   DISP=SHR,DSN=CEE.SCEEH.NET.H
 16 //DD   DISP=SHR,DSN=CEE.SCEEH.NETINET.H
 17 //DD   DISP=SHR,DSN=CEE.SCEEH.ARPA.H
 18 //DD   DISP=SHR,DSN=SYS1.SIEAHDR.H

 I've shown all the includes but I've got over 15K lines to look at.
 Nowhere do I find pthread_t defined.

 pthread_t is actually defined in CEE.SCEEH.SYS.H(EDC4H031).

 Am I supposed to debug IBM's torturous C header file hierarchy?

No, but if you look in the C RTL Reference you will see that you need a define
for either _OPEN_THREADS or _UNIX03_THREADS.



 Another issue is that for another SSL program to compile, I had to
 include the following define:

 #define _OE_SOCKETS

 Otherwise, I had en error with the AF_INET defined value. How is one
 supposed to figure this out?

Looking in the C RTL Reference? Alternatively you could define
_XOPEN_SOURCE_EXTENDED to 1.



 Also, look at the SYSLIB concatenation. The communications stuff is in 4
 header files: SYS.H, NET.H, NETINET.H and ARPA.H. Couldn't they combine
 all this into 1 nice, neat PDS.

The structure of these things is largely defined by other standards



 Maybe there is another #define that will fix the pthread_t problem?  I
 wonder which variable it is supposed to be?

See above



 I'm going to hard code the typedef pthread_t in my C source to get
 around the problem for now.

 Pierre.

Unfortunately, there are conflicting and sometimes slightly incompatible
standards. You need to define which you want.

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: CEEPIPI incorrect recovery processing?

2009-09-15 Thread Henry Willard
Gord Tomlin wrote:

 To be completely accurate, we are developing a new component for an
 existing product. The existing product is written entirely in Assembler
 and is not compatible with LE. I would love to not use CEEPIPI, but
 that's a non-starter. The new component needs to use a couple of APIs
 that are only provided in C and C++ and require LE. Were it not for the
 LE requirement, we would have used someone else's C/C++ compiler/library
 that plays more nicely with Assembler.

 I suspect that your suggestion of init_sub_dp, start_seq, call_sub, and
 end_seq will still get the same behavior in some cases, e.g., an abend
 in the driving program anywhere between two start_seq and end_seq. In
 that case, we would just be reconfiguring the problem, not really fixing it.


deleted stuff

It seems to me the simplest solution is just to insert your own ESTAEX in front
of LE's. If you want to get more adventuresome and can tolerate the
restrictions, you can use the service routine vector to ask LE to let you
provide the recovery routine.

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Assembler TCP/IP

2009-01-19 Thread Henry Willard
Joe Reichman wrote:

 Does Anybody have any pointers re: concurrent TCP/IP Assembler programs

 specfically

 A)in the Subtak (attached program) do you have to issue a

 INITAPI

 B) It it necessary to use EZASM STORAGE=GLOBAL or STORAGE=TASK

 when writting a  concurrent (meaning using subtask to use the send and
 receive) program



I highly recommend bypassing this interface and using the assembler callable
services socket interface. I think it is easier to use and more powerful
especially if you use the AIO interface. If you can run authorized, you can do
much or all of the work on enclave SRBs.

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: vsnprintf(); off by 1!?

2009-01-13 Thread Henry Willard
Paul Gilmartin wrote:

 On Mon, 12 Jan 2009 22:31:50 -0800, Henry Willard wrote:
 
 memcpy( ap, xp, sizeof( va_list ) ); is not legal C. Either use the
 c99 va_copy (va_copy(ap,xp)) created for this purpose or define
 _VARARG_EXT before including stdarg.h. Up until c99 there was no defined
 way to do what you were trying to do although your method as well as
 direct assignment worked on many but not all systems.
 
 Thanks for educating me.  Hmmm...

 #define _VARARG_EXT_

 leads to:

 Trying vsnprintf();
 CEE3204S The system detected a protection exception (System Completion 
 Code=0C4).
  From entry point f2 at compile unit offset +01A4 at entry offset 
 +01A4 at address 448CCADC.
 [1] + Done(139) gmake varg amp; ./varg
   67109204  Segmentation violation  ./varg

 ... a step backward.  If vsnprintf() is incompatible with _VARARG_EXT_,
 it would be a courtesy to the programmer to manifest this at compile
 time, possibly by using char** instead of va_list to expose the
 incompatibility.

vsnprintf() is incompatible with C89. Although it has shown up in many 
compilers it was officially introduced to C in C99. You are trying to use two 
features of the C
language that are defined only in C99.



 I see that va_copy() is defined as:

   #define va_copy(dest, src) ((dest) = (src))

 ... simple enough.  But our systems programmer hasn't configured
 the c99 environment.

Then I think you have a complaint with your systems programmer if you want to 
use C99 features.



 If I undefine and redefine va_start, adding a call to va_arg at
 the end, it works OK.  But my real goal is to get it working in
 enhanced ASCII mode.  And that fails with:

 c89 -I.. -D_ALL_SOURCE   -Wa,ASA,RENT -Wl,xplink,EDIT=NO -Wc,dll,ascii   -o 
 varg ../source/varg.c /usr/lib/Xaw.x /usr/lib/SM.x /usr/lib/ICE.x 
 /usr/lib/X11.x -lcurses
 -sh 0 + ./varg
 -sh 0 + 2 1
 -sh 0 + iconv -f ISO8859-1 -t IBM-1047
 CEE3204S The system detected a protection exception (System Completion 
 Code=0C4).
  From entry point f2 at compile unit offset +0060 at entry offset 
 +0060 at address 448F0190.
 Format:  %s -- %s 

Your program using either C99 va_copy or _VARARG_EXT and your technically 
illegal memcpy technique works fine for me in enhanced ASCII mode if I tell the 
compiler to use
C99 rules.



 Thanks,
 gil


h

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: vsnprintf(); off by 1!?

2009-01-12 Thread Henry Willard
Paul Gilmartin wrote:

 Are questions about C better asked here or on MVS-OE?  Surely
 not on ASSEMBLER_LIST -- it's far too busy this week with a
 nostalgia thread.

 The C test program:
 /* -*/
 #include stdarg.h
 #include stdio.h
 #include string.h

 static char buffer[ 100 ];

 static void f2( char *fmt, va_list xp ) {
 va_list ap;
 char *a;

 memcpy( ap, xp, sizeof( va_list ) );
printf(Format: \%s\\n, fmt );
 a = va_arg( ap, char * );  printf(First : \%s\\n, a );
 a = va_arg( ap, char * );  printf(Second: \%s\\n, a );

 memcpy( ap, xp, sizeof( va_list ) );
 printf( \nRetrying\n );
 a = va_arg( ap, char * );  printf(First : \%s\\n, a );
 a = va_arg( ap, char * );  printf(Second: \%s\\n, a );

 memcpy( ap, xp, sizeof( va_list ) );
 printf( \nTrying vsnprintf();\n );
 vsnprintf( buffer, 99, fmt, ap );
 printf( %s\n, buffer );
 return; }

 static void f1( char *fmt, ... ) {
 va_list ap;
 char *a;

 va_start( ap, fmt );
 f2( fmt, ap );
 return; }

 int main( void ) {

 f1(  %s -- %s , foo, bar );

 return( 0 ); }
 /* -*/

 On Solaris and OS X prints, as I expect:

 Format:  %s -- %s 
 First : foo
 Second: bar

 Retrying
 First : foo
 Second: bar

 Trying vsnprintf();
  foo -- bar

 But on z/OS 1.10 and 1.7, the unexpected:

 Format:  %s -- %s 
 First :  %s -- %s 
 Second: foo

 Retrying
 First :  %s -- %s 
 Second: foo

 Trying vsnprintf();
   %s -- %s  -- foo

 Do I fail to understand something, or have I (again)
 encountered a bug?  I'll welcome any workaround that
 doesn't break compatibility with the other 2 systems.
 I'll likewise welcome a test on another system (Linux?)

 Thanks,
 gil

memcpy( ap, xp, sizeof( va_list ) ); is not legal C. Either use the
c99 va_copy (va_copy(ap,xp)) created for this purpose or define
_VARARG_EXT before including stdarg.h. Up until c99 there was no defined
way to do what you were trying to do although your method as well as
direct assignment worked on many but not all systems.

h



 --
 For IBM-MAIN subscribe / signoff / archive access instructions,
 send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
 Search the archives at http://bama.ua.edu/archives/ibm-main.html

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: zIIP API for ISV's

2008-02-28 Thread Henry Willard
Brian Westerman wrote:

 I'm a member, but I wasn't aware of the availability.  I still can't find it
 on the D-Works web site.  Can you point me to it?

You need a CDA first. Being a D-Works member doesn't count.



 Brian


Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Migration from Mainframe to othre platforms - the othe bell?

2008-02-01 Thread Henry Willard
Rich Smrcina wrote:

 At one time AIX ran on the mainframe, first as AIX/370, then briefly as
 AIX/ESA.  Now it is strictly a System p operating system.


Other than having AIX in the name and being ports based on some version of
Unix, AIX/ESA and AIX/370 didn't have much in common with the AIX that runs
on System p.

Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Two things missing from DFSORT in a perfect world?

2008-01-28 Thread Henry Willard
Frank Yaeger wrote:

 Roberto Halais wrote on 01/28/2008 11:54:59 AM:
   also a conversion for IP addresses as they are
  stored in SMF in hex format to something like xxx.xxx.xxx.xxx.

 You can already convert 4-byte hex values for IP addresses to displayable
 values with DFSORT.  For example if you had input records with the
 following hex values in positions 1-4:

 1 2 3 4   - position
 05E21308
 8520E301

 you could use this DFSORT job to convert them to ddd.ddd.ddd.ddd values:

 //S1EXEC  PGM=ICEMAN
 //SYSOUTDD  SYSOUT=*
 //SORTIN DD DSN=... input file
 //SORTOUT DD SYSOUT=*
 //SYSINDD*
   OPTION COPY
   INREC BUILD=(1,1,BI,TO=ZD,C'.',2,1,BI,TO=ZD,C'.',
3,1,BI,TO=ZD,C'.',4,1,BI,TO=ZD)
 /*

 For the example input, SORTOUT would have:

 005.226.019.008
 133.032.227.001

 Frank Yaeger - DFSORT Development Team (IBM) - [EMAIL PROTECTED]
 Specialties: PARSE, JFY, SQZ, ICETOOL, IFTHEN, OVERLAY, Symbols, Migration

BTW, the dotted decimal representation of 8520E301 is 133.32.227.1.
133.032.227.001 is 851AE301. Leading zeros means octal.

Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: How does ATTACH pass address of ECB to child?

2008-01-21 Thread Henry Willard
Craddock, Chris wrote:


 As in horshoes? Yes. The ECB is one of the most widely used tools in
 the system. As a serialization primitive it is just awful, but there's
 no getting away from it now.


The ECB might not be perfect, but compared to what you have to put up with
on Unix where there are about a half dozen mechanisms which can't be used
together, it is downright brilliant.


 CC

Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Basic Cross Memory questions

2007-12-17 Thread Henry Willard
Logan, David wrote:

 Even with my AXSET, I still get a S052/319 ABEND at the ETCRE macro. I
 have no idea why. My code looks right based on what I think I know. What
 am I doing wrong?

  MODESET MODE=SUP,KEY=ZERO
 GETAXDS0H
  LA6,1
  AXSET AX=(6)
  MVC   LXCOUNT,=F'1'
 GETLXWTO   'BEFORE LXRES'
 XETLXLXRES LXLIST=LXL,SYSTEM=YES
  WTO   'AFTER LXRES'
  L 5,PCRTNADR
  ETDEF TYPE=SET,ETEADR=ETD1,ROUTINE=(5),EAX=(6),AKM=(0:15),X
SSWITCH=YES,STATE=SUPERVISOR,EKM=(0:15),PKM=OR, X
ASCMODE=AR
  WTO   'AFTER ETDEF'-- Last WTO to be written
 CET1 ETCRE ENTRIES=ETDESC
  WTO   'AFTER ETCRE'
  ST   0,TKVALUE
  MODESET MODE=PROB,KEY=NZERO
  EDCEPIL

 David Logan


Get rid of the EAX altogether.

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Zapping HFS files

2007-10-19 Thread Henry Willard
McKown, John wrote:

  -Original Message-
  From: IBM Mainframe Discussion List
  [mailto:[EMAIL PROTECTED] On Behalf Of Tony Harminc
  Sent: Thursday, October 18, 2007 12:00 PM
  To: IBM-MAIN@BAMA.UA.EDU
  Subject: Re: Zapping HFS files
 
 
 snipped

 I asked over on the Linux-390 forum about this. GNU patch has a --binary
 option for changing binary (non text) files. Unfortunately, IBM once
 again lags behind GNU in functionality.

There is nothing magical about patch or particularly advanced. It takes the
output from diff and applies to other files. I believe patch has been ported
to z/OS, and if it weren't it shouldn't be hard to do.



 --
 John McKown
 Senior Systems Programmer
 HealthMarkets
 Keeping the Promise of Affordable Coverage
 Administrative Services Group
 Information Technology

 The information contained in this e-mail message may be privileged
 and/or confidential.  It is for intended addressee(s) only.  If you are
 not the intended recipient, you are hereby notified that any disclosure,
 reproduction, distribution or other use of this communication is
 strictly prohibited and could, in certain circumstances, be a criminal
 offense.  If you have received this e-mail in error, please notify the
 sender by reply and delete this message without copying or disclosing
 it.

 --
 For IBM-MAIN subscribe / signoff / archive access instructions,
 send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
 Search the archives at http://bama.ua.edu/archives/ibm-main.html

Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Non-Standard Mainframe Language?

2007-05-28 Thread Henry Willard
Mohammad Khan wrote:

 Well, C on UNIX is really assembler - just one step removed from the
 bits and
 bytes of the underlying CPU.

No, assembler is assembler on Unix. C is a high level language used as a
system programming and implementation language on Unix just as PL/I was
the implementation language of Multics and ESPOL (an extension of ALGOL)
was the implementation language of Burroughs' MCP. Both of these
predated C and Unix,

 Its designers realized that there is not much
 benefit in writing CPU specific code to copy x bytes of memory to
 another
 location over the generic a = b kind of code. Same for other basic
 operation
 common to most CPUs - arithmetic, compare, branch etc. Going CPU
 specific
 and lot of tedius work one could get a few percent CPU savings but it
 wasn't
 considered to be worth it. And I tend to agree.

The developers working on Unix, most of whom had been working on
Multics, wanted to work in a high-level language. The major languages of
the time, Fortran, PL/I, and ALGOL were too large for the resources
available. A large part of the primitive character of C is due to its
ancestors, BCPL and B, and the original environment where B was
developed - a PDP-7 with 8K words of memory.


  On the other hand OS specific facilities ( macros, SVC ) were wrapped
 for
 easy use in standard library. Then again their standard library is
 NOT z/OS
 standard library, though you can try to map it. This also made their
 application
 and system programming domains a continuum rather than two isolated
 domains.
 A similar approach for MVS would have been great in my humble opinion
 but it
 developed on very different lines. On one side we have COBOL
 programmers
 who hardly know anything about the capabilities and strength of the
 underlying OS. Their domain is merely the generic computing functions
 (
 arithmetic, compare etc. ) and middleware API ( CICS command level,
 DB2
 SQL, IMS calls etc.). Just ask any COBOLer about coding a program with

 parallel tasks. This step is a lot easier for a UNIX programmer. On
 the other
 hand the real programmers talk in bits and bytes which does create a
 guru
 aura but isn't easy for the newcomers.

There is little if anything that can be done in C that can't be done in
PL/I including implementing an operating system[1]. The C language
itself has no support whatever for parallel tasks and is no more well
suited to such an environment than COBOL. pthreads, which is a Posix
standard, is an add-on library with limited support for parallel tasks.


 Just my 2 cents
 Mohammad


[1] C seems to be particularly well suited to writing code susceptible
to buffer overrun bugs which have often made Unix systems easy prey for
attackers.

Regards,
Henry Willard

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: DB2 V9 z/OS GA (Was: What to do with extra storage on new z9)

2007-03-15 Thread Henry Willard
Craddock, Chris wrote:

   There are 3 different code platforms for DB2 - I'm missing
   some details, so someone please fill in the blanks...
  
- Non-mainframe platforms (Unix-type), which came from
   another data base product
  purchased by IBM a long time ago (Sequent?), and has some
   code shared with
  Informix
- z/OS (the original System R)
- z/VSE, z/VM, which IIRC is based on DL/1
 
  IIRC, DL/I maps to IMS  On VM/ESA (previous shop; many moons
 ago)
  we ran SQL, which probably maps to DB2 on z/OS.  I think it was
 also
  called SQL on VSE.

 The first IBM relational product was SQL/DS which ran on VM. System/R
 was the original research prototype and it never shipped to the outside
 world. DB2 was developed independently of SQL/DS and it had a completely
 MVS-centric design that could never have fit into any other IBM
 mainframe OS. I don't know if SQL/DS ever ran on VSE, but I am certain
 that DB2 never did.

 DL/1 (data language 1) was and is the interface language for IMS/DB and
 its successors. It supports access to hierarchical parent/child data
 structures with verbs like Get Unique (GU), Get Next (GN) etc. The DL/1
 model is wildly different than any SQL dialect.

 It is true that there are separate code bases for the z and non-z forms
 of DB2, but as time passes most new functions are added to the open
 platforms first and wherever possible that code is shared with DB2 on z.

 CC


SQL/DS was actually released on VSE a few months before VM. It was a
cleaned-up version of System/R. DB2 was written from scratch to run on MVS.
Besides the three mentioned so far there is also a fourth DB2 that is
integrated with i5/OS.

h

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: fd_set, select() and z/OS XL C 1.7

2006-11-30 Thread Henry Willard
Michael Knigge wrote:

 On Wed, 29 Nov 2006 09:31:12 -0800, Henry Willard [EMAIL PROTECTED]
 wrote:

 How about reading the manual?

 How about reading my posting? Or am I blind?

  #define _OE_SOCKETS
  #define _OPEN_MSGQ_EXT

 Both are defined using the following Compiler-Options:

 DEFINE(_OE_SOCKETS)
 DEFINE(_OPEN_MSGQ_EXT)

  #include sys/types.h
  #include sys/time.h
  #include sys/msg.h

 All three headerfiles are also included in my source.

 So, what did you wanna tell me? I can't get it!

 Bye,
 Michael

Sorry, I did miss that. Unfortunately your example compiles cleanly on my 1.7
system using the same options except for LOCALE and LSEARCH. Use of the SHOWINC
option will show what is going on in the header files.

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: fd_set, select() and z/OS XL C 1.7

2006-11-29 Thread Henry Willard
Michael Knigge wrote:

 All,

 I need the datatype fd_set and the select() function on z/OS but it
 seems I'm loosing the fight with the compiler :-(

 my source looks quite simple:

 #include sys/types.h
 #include sys/time.h
 #include sys/msg.h

 int main(int argc, char *argv[])
 {
 fd_set   bla;

 printf(HEELP!\n);
 return(0);
 }

 And the compiler tells me:

 CCN3275 Unexpected text bla encountered.
 CCN3045 Undeclared identifier fd_set.

 But why?!?!?! What's missing? fd_set is defined in sys/time.h
 (SYS1.CEE.SCEEH.SYS.H) and I can't see what I'm missing.

 Just for the completeness, here are my compiler-options:

 DLL
 RENT
 STRICT
 CHARS(UNSIGNED)
 LANGLVL(EXTENDED)
 ARCH(0)
 TUNE(0)
 SSCOMM
 TARGET(LE)
 LSEARCH(DD:USERLIB)
 NOOPT
 LONGNAME
 SOURCE
 ROSTRING
 OBJECT
 PLIST(HOST)
 LOCALE(DE_DE.IBM-273)
 EXECOPS
 NOSTRICT_INDUC
 NOWSIZEOF
 NOSEQUENCE
 NOMARGINS
 NOINLINE
 NOLIST
 NOOFFSET
 NOCOMPACT
 NOCOMPRESS
 NOIGNERRNO
 NOINITAUTO
 DEFINE(_OS390)
 DEFINE(_OE_SOCKETS)
 DEFINE(_OPEN_MSGQ_EXT)
 DEFINE(_ALL_SOURCE)

 Can someone bring me in the right direction?!?!

 Thank you very much,
 Michael

How about reading the manual?

X/Open

 #define _XOPEN_SOURCE_EXTENDED 1
 #define _OPEN_MSGQ_EXT
 #include sys/types.h
 #include sys/time.h
 #include sys/msg.h
 int select(int nmsgsfds, fd_set *readlist,
fd_set *writelist, fd_set *exceptlist,
struct timeval *timeout);


Berkeley Sockets

 #define _OE_SOCKETS
 #define _OPEN_MSGQ_EXT
 #include sys/types.h
 #include sys/time.h
 #include sys/msg.h
 int select(int nmsgsfds, fd_set *readlist,
fd_set *writelist, fd_set *exceptlist,
struct timeval *timeout);

Regards,
Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: assembler question (strong typing)

2006-11-18 Thread Henry Willard
Paul Gilmartin wrote:

 In a recent note, john gilmore said:

  Date: Sat, 18 Nov 2006 15:10:14 +
 
  I, for one, loathe strong typing.  In my own code I do data-type punning
  routinely, and I should not wish to see the HLASM converted into as C-lilke
  language that made this gratuitously difficult.
 
 Certainly data-type punning is possible in C; entire oerating systems
 have been written in C, which would be impossible otherwise.  (What
 prevalent operating systems are written in PL/I?).

Multics was written in PL/I

Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: How is the mainframe like the opera?

2006-10-09 Thread Henry Willard
Craddock, Chris wrote:

  I wonder how difficult it would be for
  IBM to implement a totally millicoded zSeries instruction set using a
  Power chip?

 It depends. If you just wanted it to run, then it would be easy. Heck
 you can do it on a PC and get 80-odd MIPS so how hard can it be? OTOH
 if you wanted it to run at a respectable fraction of (current) native
 performance it might be quite a bit harder.

 Developing the genuine z hardware platform is far more expensive than
 simply doing emulation and there is a duplication of effort between z
 and p series. However, there is also a lot of shared development between
 z and p too.

 IBM obviously believes it's in their best interests to maintain a native
 z architecture implementation, at least for now. The same was true of
 native AS/400 but eventually economics drove that platform into the arms
 of the Power architecture and they haven't looked back. It's
 theoretically possible to do z on Power and even if there aren't any
 plans to do it, never is a long time.

 CC

Google ECLipz

h

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: REAL memory column in SDSF

2006-09-28 Thread Henry Willard
[EMAIL PROTECTED] wrote:

  Have the presenter review ancient history in the S/360 line -- the 360
  line
  generally supported differing page sizes (2K and 4K) and the 360/67
  supported 2K, 4K and even 1M page sizes.  (I don't recall whether any SCP
  shipped that dealt with 1M page sizes, especially in the VERY expensive
  storage era of the S360 line though.  That could be why the idea lurked
  for
  lo these many years.)

 S/360 didn't have page sizes since there were no pages, because there was no
 virtual storage.  The support for 2K and 4K pages occurred on S/370 with VS1
 and VS2.

 I'm not entirely sure why anyone would think a 1MB page size is beneficial
 in any way.  It would arbitrarily increase the cost of data transfer with no
 tangible benefit.  If the storage were already being frequently referenced,
 then block paging would group contiguous pages together and block then for
 a more adjustable benefit.  Using 1MB sizes would presume that there is
 enough references to warrant grouping so a large number of pages together.
 Unless you're seeing large paging blocks, there is no support for the
 notion that larger page sizes would be either more efficient or better
 performers.

 I suppose an argument could be made that larger page sizes would reduce the 
 amount of storage necessary to back allocations (i.e. page tables).   If 
 there is little real page movement to DASD, then the trade-off may be worth 
 it in reducing the cost of managing large working sets.

 Adam


Practically all of the other processor architectures (Sparc, Itaniam, PowerPC, 
x86-64) support large pages of 1M or more, and all the commercial Unix systems 
and Linux support them in one or another. The main purpose is to make more 
efficient use of the TLB and reduce the size of the
page tables which can grow quite large on 64-bit systems. Large pages are 
typically used for things like Oracle buffer pools which are never paged.

Henry

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html