On Tue, 25 Feb 2020 10:33:36 -0800, Charles Mills wrote:
>
>EDCDSECT does the world's ugliest job on assembler ORG and things like FL0 but
>it ends up technically correct. Ugly as sin, but the layouts are right.
>
Yup.
>struct tiot {
> unsigned char tiocnjob[8];
> /* - JOB NAME */
> struct {
> struct {
> unsigned char _tiocpstn[8];
> /* - 8-BYTE PROC STEP NAME FOR PROCS @P1A */
> } tiocstpn;
> unsigned char _tiocjstn[8];
> /* - 8-BYTE JOBSTEP NAME FOR PROCS @P1A */
> } tiocstep;
>
Why "*unsigned* char" I know that "char *", "unsigned char *", and "signed
char *"
are pairwise incompatible, per ANSI, and IBM's C is the only processor I know
that
enforces this. I once needed to correct a shareware author on a transgression.
(IIRC, he used a cast as an L-value.) But I'd expect a z-centric product to
rely on
the native unqualified construct. Greater portability?
On Tue, 25 Feb 2020 10:29:39 -0800, Charles Mills wrote:
>And that's why it works (but does not work without that cast), or as Gil put
>it "So I can't do "foo -> member", but must "(type *) foo-> member".
>
That appears to be Charles agreeing with Shmuel's uncharacteristically
agreeing with Charles's agreeing with me.
+1. Me, too.
-- gil
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN