Like Bernd, I only speak C and some C# on Windows..no C++, not yet.


Regards,

Scott





From: Bernd Oppolzer
Sent: ‎Saturday‎, ‎March‎ ‎29‎, ‎2014 ‎6‎:‎18‎ ‎AM
To: IBM Mainframe Discussion List





I can only speak for C, we don't have C++ at our site.

So I would ask you to try the #include <stdio.h> first and leave out
the #include <iostream> for the beginning, because that is a C++ header
which you will not be able to use in a C program.

We allocate for USERLIB exactly the same DD chain as for SYSLIB.

The difference is

user includes, that is

#include "userinc.h"

goes to USERLIB

and system includes

#include <stdio.h>

goes to SYSLIB

Because the application people at our site constantly mix things up
and use #include <xxx> for user includes (for example), we decided to
do it this way. The normal way is to include the system directories in
the user path, too (for windows and Unix: if you write #include "xxx",
the first look goes to the active directory).

I don't know if the parms LSEARCH and SEARCH are really needed;
I think that they are meant to override the DDnames for the library search,
and if you omit them, the DDnames should default to USERLIB and SYSLIB.

My experience. the C compiler on z/OS batch works much like the other
compilers for COBOL and PL/1, too. For people having experience with
the other language processors, simply no problem with those compilers
and their usage with batch JCL.

If you want, we can examine things further offline next week, when I have
access to my customers mainframe.

Kind regards

Bernd



Am 28.03.2014 18:19, schrieb Chuck Arney:
> I'm making a first attempt at C code on z/OS and I'm having trouble making
> the compiler work the way I understand it should from the manual.  This is
> such a basic function and it fails so miserably I'm sure this is some sort
> of setup misunderstanding.
>
> The problem is that the compiler is not locating the header files that are
> included in the source program.  My understanding from the manual is that
> the compiler PARM SEARCH controls the library search sequence used for
> system headers and the PARM LSEARCH controls the search for user headers.  I
> have tried every combination of coding absolute paths, DDnames and PARMS
> that I can come up with and the thing just refuses to work.  The most simple
> case I can see is to specify the compiler PARMS NOSEARCH,NOLSEARCH.
> According to the manual with these parms, the compiler should search the
> libraries/directories defined in the SYSLIB DD concatenation for system
> headers and search the libraries/directories defined in USERLIB DD for user
> headers.  Using those parms with the SYSLIB and USERLIB DDs the compiler
> does not find the #include header files which are certainly contained in the
> libraries pointed to by the two DDs.  I have tried much more complex options
> using both PDS libraries and ZFS directories with no success.
>
> I have tried using several different levels of z/OS and they all fail in the
> same way.  The most recent system is 5650ZOS V2.1 z/OS XL C.  This is using
> the Batch compiler.  Here is the simplest example:
>
> Code snippet:
>
> #include <stdio.h>
> #include <iostream>
> #define NUM_CHARS 36
>
> JCL snippet:
>
> // SET #CPP=CBC
> // SET #LE=CEE
> //PROC JCLLIB ORDER=(&#CPP..SCCNPRC,
> //   &#LE..SCEEPROC)
> //TEST1L  EXEC EDCCB,
> // CPARM='RENT,SOURCE,LIST,NOLSEARCH,NOSEARCH',
> //        TUNIT='VIO',
> //        LIBPRFX=&#LE.,
> //        LNGPRFX=&#CPP.,
> //*       INFILE=&#CPP..SCCNSAM(CCNYIV1),
> //        INFILE=TSTCASES.ASM(CTEST1),
> //        OUTFILE='TSTCASES.LOADLIB.PDSE(CTEST1),DISP=SHR'
> //COMPILE.SYSLIB   DD  DSNAME=&#LE..SCEEH.H,DISP=SHR
> //         DD  DSNAME=&#LE..SCEEH.SYS.H,DISP=SHR
> //         DD  DSNAME=&#LE..SCEEH,DISP=SHR
> //COMPILE.USERLIB DD PATH='/usr/include',
> //    PATHDISP=(KEEP,KEEP),PATHOPTS=ORDONLY,FILEDATA=TEXT
>
> And the result:
>
> Compiler options. . . . . . . : *GONUMBER   *NOALIAS    *RENT       *TERMINA
>                                    : *NOSEARCH
>                                    : *NOLSEARCH
>                                    : *NOLOCALE   *HALT(16)   *PLIST(HOST)
>                                    : *NOCONVLIT
>
> LINE  STMT
>
>   
> *...+....1....+....2....+....3....+....4....+....5....+....6....+
>      3       |#include <stdio.h>
>
> ===========>
> .........a.......................................................
> *=WARNING=========> a - CCN3296 #include file <stdio.h> not found.
>
>      6       |#include <iostream>
>
> ===========>
> .........a.......................................................
> *=WARNING=========> a - CCN3296 #include file <iostream> not found.
>
>      7       |#define NUM_CHARS 36
>
>
> What am I missing?
>
> Chuck Arney
> Arney Computer Systems
> Web: http://zosdebug.com
> Facebook: http://www.facebook.com/arneycomputer
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN
>

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to