This is a slightly modified version of jn2.c:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>

int main  (int argc, char **argv)

{
   int *PSA;
   int *ASCB;
   int *ASXB;
   int *ASXBP;
   int *JNPI;
   char jobname[9];

   PSA = (int *) 0x224; /* address of PSAAOLD */
   ASCB = (int *) *PSA;
   printf ("ASCB = %p\n", ASCB);
   ASXB = (int *) ((char *) ASCB + 0x6c);
   printf ("ASXB = %p\n", ASXB);
   ASXBP = (int *) *ASXB;
   printf ("ASXBP = %p\n", ASXBP);
   JNPI = (int *) ((char *) ASXBP + 0xC0);
   printf ("JNPI = %p\n", JNPI);
   memcpy (jobname, JNPI, 8);
   jobname [8] = 0x00;
   printf ("jobname = %s\n", jobname);
}

a) pure ANSI C

b) some intermediate steps and variables removed

c) there is a subtle error in the original version:
the terminating hex zero in jobname is missing. I added it.

Caution: untested ...

Kind regards

Bernd



Am 09.02.2018 um 12:41 schrieb Bernd Oppolzer:
.. in fact, the original source contains some parts,
which are not ANSI C, for example cout (which is C++)
and iostream.h (which is also part of the C++ library).

Because I don't like C++ ... and the program claims to be
a C program, I would (as a QA person) force the coder to
eliminate these parts of the code.

Kind regards

Bernd


Am 09.02.2018 um 12:32 schrieb Bernd Oppolzer:
Am 09.02.2018 um 07:45 schrieb Elardus Engelbrecht:
Bernd Oppolzer wrote:

To be more pedantic, use additional parantheses:
ASXB = (int *) (((char *) ASCB) + 0x6c);
I C     ( "I see"   ;-D )

Seriously, I find this whole thread very interesting.

Just a question please and please excuse my ignorance.

Are these discussions about C or C++?

Because:

OP said 'crawl my way around C/C++'
Shmuel and Paul are talking about C and Charles talked about C++ (for his 2 templates)

Feel free to teach me so I can C...

TIA!

Groete / Greetings
Elardus Engelbrecht



I went back to the original post which started the thread;
the OP said "C / C++", but posted a C program (called jn2.c),
so I guess, the discussion should in fact be about C.

a) It's all pure C syntax
b) with C++, the filetype would have been "cpp"

HTH, kind regards

Bernd

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN



----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to