Re: First C program

Jevgeni Astanovski <[email protected]>
Newsgroups gmane.comp.lang.as400.c
Message-ID <[email protected]>
One more thing.
You write:
		memcpy (sfrcd.S01FUNC  , "          ", 2  );
            memcpy (sfrcd.S01APFILE, "          ", 10 );
            memcpy (sfrcd.S01APLIB , "          ", 10 );
            memcpy (sfrcd.S01APACCP, "          ", 1  );
            memcpy (sfrcd.S01APUNIQ, "          ", 1  );
            memcpy (sfrcd.S01APSELO, "          ", 1  );
            memcpy (sfrcd.S01APFTYP, "          ", 1  );
            memcpy (sfrcd.S01APJOIN, "          ", 1  );
            memcpy (sfrcd.S01APKEYO, "          ", 1  );
            memcpy (sfrcd.S01APKSEQ, pfrcd.APKSEQ, 1  );
            memcpy (sfrcd.S01APKSIN, pfrcd.APKSIN, 1  );
            memcpy (sfrcd.S01APKEYF, pfrcd.APKEYF, 10 );

My advise is to do it another way:
	memset(&sfrcd, ' ', sizeof(sfrcd)) ;
      memcpy (sfrcd.S01APKSEQ, pfrcd.APKSEQ, 1  );
      memcpy (sfrcd.S01APKSIN, pfrcd.APKSIN, 1  );
      memcpy (sfrcd.S01APKEYF, pfrcd.APKEYF, 10 );

C differs from other languages - it does not initialize variables on declarations in general, and structures - in particular.
So by setting full structure to spaces and then assigning/initializing only specific fields you make your program at least shorter. But also more reliable.
Of course you must take care of numeric fields - you have to explicitly assign valid numeric values to them before accessing.


-----Original Message-----
From: c400-l-bounces-Zwy7GipZuJhWk0Htik3J/[email protected] [mailto:c400-l-bounces-Zwy7GipZuJhWk0Htik3J/[email protected]] On Behalf Of Frank Kolmann
Sent: Thursday, April 03, 2014 1:39 PM
To: c400-l
Subject: [C400-L] First C program

Hi Jevgeni



Thank you.  You make good points.

That is a good way of trapping the == issue.

I will follow Barbaras advice in the coding of the if.



I like the way you use the #define for the type defs.

It does make the code clearer, I will use that sytle.



Frank





>*Subject: Re: First C program

>*From: Jevgeni Astanovski <Jevgeni.Astanovski@xxxxxxxxxxxxx>

>*Date: Wed, 2 Apr 2014 07:54:34 +0000

>Yes. Barbara mentioned the define and I haven't...

>Definitely there are lots of this sort of advises to avoid =/== 
>possible
mistake.

>I've never saw the one you referred.

> However some use another technique:

>Instead of writing

>if ((pf = _Ropen(PFILENAME, "rr")) == NULL)

>they write

>if (NULL == (pf = _Ropen(PFILENAME, "rr")))

>In this case if you make a mistake and write

>if (NULL = (pf = _Ropen(PFILENAME, "rr")))

>you will immediately get a syntax error.

>

....

>

>On the second issue - this is purely a question of how readable is your
program.

> My personal practice is to use "explicit" way of defining types. For
example:

>

>#pragma mapinc("dspf", "*LIBL/Y80ALD(ADDCHRG)", "both", "_P", "Y80", 
>"Y80")

> #include "dspf"

> #define INPUT_T Y80_ADDCHRG_i_t

> #define OUTPUT_T Y80_ADDCHRG_o_t

>
>in this case it is (more) clear where these types are derived from....
--
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L) mailing list To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected] To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
Before posting, please take a moment to review the archives at http://archive.midrange.com/c400-l.

-- 
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L) mailing list
To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected]
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
Before posting, please take a moment to review the archives
at http://archive.midrange.com/c400-l.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.