For the archives, I found answers to my issue.
1. The “/bin/c89” executable on my system was an obsolete version; I had to add the “/usr/lpp/cbclib/xlc/bin” directory to my $PATH to get the correct version 2. My translation of the sample Rexx script to a shell script incorrectly left the flag parameters on the c89 command line inside apostrophes, which prevented c89 from actually seeing them correctly as arguments. I had to remove the apostrophes and add “backslash-parenthesis” escapes for the LANGLVL option value The now-working shell script line to run the c89 command is: c89 -oceasamt -v -g -Wc,LP64,SHOW,SO,AGGR,XREF,NOOFF,NOOPT,EXP,LIST\(./\),SSCOMM,DLL,STA,LANGLVL\(EXTENDED\),WARN64 -Wl,LP64,map,xref ./ceasampt.c /usr/lib/ceasapit.x Peter From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of Colin Paice Sent: Tuesday, November 12, 2024 3:00 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: c89 syntax errors despite using the SSCOMM compiler option Could be a code page issue. USS users guide says The LC_SYNTAX environment variable The POSIX portable character set has 13 characters whose encoding might vary on different EBCDIC code pages: Right brace (}) Left brace ({) Backslash (\) Right bracket (]) Left bracket ([) Circumflex (^) Tilde (~) Exclamation point (!) Number sign (#) Vertical bar (|) Dollar sign ($) *Commercial at-sign (@)* Accent grave (`) ls -T ccc.c will show you the code page. IBMUSER:/u/ibmuser: >ls -T ccc.c - untagged T=off ccc.c I compiled a line line C program with // @ and it did not have any problems. Colin On Mon, 11 Nov 2024 at 19:33, Farley, Peter < 0000031df298a9da-dmarc-requ...@listserv.ua.edu> wrote: > Hi all, > > I am trying to compile and test the CEA sample program from the manual > "MVS Programming: Callable Services for High-Level Languages", > SA23-1377-50, Chapter 12. Using CEA TSO/E address space services, > Programming example. > > I am trying to run this test on a z/OS V2.5 system with relatively current > maintenance applied. > > The suggested compile and link script is listed in the manual as follows: > > /* rexx */ > /* c89/cc/c++ */ > /* dbx needs -g or -Wc,debug */ > /* list\(./\) */ > /* export _C89_STEPS='-1' enable all steps, inc prelinker */ > /* export _C89_TMPS ='-3' prelinker will write composite .p file*/ > 'c89 -oceasamt -v -g -Wc,LP64,SHOW,SO,AGGR,XREF,NOOFF,NOOPT,EXP,LIST\(./\) > SSCOMM,DLL,STA,''LANGLVL(EXTENDED)'',WARN64 > -Wl,LP64,map,xref > ceasampt.c ceasapit.x > ' > 'ls -gatlrE ceasamt.* ceasamt' > > For reasons I cannot get into here, I had to implement that script as a > regular shell script rather than a Rexx script, and I implemented it as > this: > > export STEPLIB=SYS1.SCBCCMP > c89 '-oceasamt -v -g > -Wc,LP64,SHOW,SO,AGGR,XREF,NOOFF,NOOPT,EXP,LIST\(./\),SSCOMM,DLL,STA,''LANGLVL(EXTENDED)'',WARN64 > -Wl,LP64,map,xref' ./ceasampt.c /usr/lib/ceasapit.x > ls -gatlrE ceasamt.* ceasamt > > Note that I have included the SSCOMM compiler option in the option list, > which as I read the manual is SUPPOSED to allow C programs to use the "//" > comment convention from C++. However, the c89 compile step still complains > about "invalid C source characters" despite those characters being present > in a source line FOLLOWING a "//" comment start. > > Example : Lines 85 and 86 of the included file > "/usr/include/ceaxrdef.h"are: > > // @DAA > // Reason Codes // @P8A > > As I understand the syntax rules, those @ characters are a comment and > should be ignored, shouldn't they? > > Below is the full output from executing the c89 shell script that I pasted > above. > > Any help or RTFM you can provide would be appreciated. > > Peter > > Script output in a Unix services shell: > > + export STEPLIB=SYS1.SCBCCMP > + c89 -oceasamt -v -g > -Wc,LP64,SHOW,SO,AGGR,XREF,NOOFF,NOOPT,EXP,LIST\(./\),SSCOMM,DLL,STA,LANGLVL(EXTENDED),WARN64 > -Wl,LP64,map,xref ./ceasampt.c /usr/lib/ceasapit.x > ERROR CBC3191 /usr/include/ceaxrdef.h:85 The character @ is not a valid > C source character. > ERROR CBC3191 /usr/include/ceaxrdef.h:86 The character @ is not a valid > C source character. > ERROR CBC3191 /usr/include/ceaxrdef.h:345 The character # is not a valid > C source character. > ERROR CBC3191 /usr/include/ceaxrdef.h:345 The character @ is not a valid > C source character. > ERROR CBC3191 ./ceasampt.c:539 The character @ is not a valid C source > character. > ERROR CBC3191 ./ceasampt.c:742 The character @ is not a valid C source > character. > ERROR CBC3046 /usr/include/ceaytsor.h:95 Syntax error. > CBC1793(I) Compilation failed for file ./ceasampt.c. Object file not > created. > FSUM3065 The COMPILE step ended with return code 12. > FSUM3017 Could not compile ./ceasampt.c. Correct the errors and try again. > + ls -gatlrE ceasamt.* ceasamt > ls: FSUM6785 File or directory "ceasamt.*" is not found > ls: FSUM6785 File or directory "ceasamt" is not found -- 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