21.02.2013 Views

System i: Programming i5/OS PASE - IBM

System i: Programming i5/OS PASE - IBM

System i: Programming i5/OS PASE - IBM

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

}<br />

/* rcvr is the output parameter 1 from QSZRTVPR */<br />

char rcvr[108];<br />

/* rcvrlen is input parameter 2 to QSZRTVPR */<br />

int rcvrlen = sizeof(rcvr);<br />

/* errcode is input parameter 5 to QSZRTVPR */<br />

struct {<br />

int bytes_provided;<br />

int bytes_available;<br />

char msgid[7];<br />

} errcode;<br />

/* qszrtvpr_pointer will contain the <strong>i5</strong>/<strong>OS</strong> 16-byte tagged system<br />

pointer to QSZRTVPR */<br />

ILEpointer qszrtvpr_pointer;<br />

/* qszrtvpr_argv6 is the array of argument pointers to QSZRTVPR */<br />

void *qszrtvpr_argv[6];<br />

/* return code from _RSLOBJ2 and _PGMCALL functions */<br />

int rc;<br />

/* Set the <strong>i5</strong>/<strong>OS</strong> pointer to the QSYS/QSZRTVPR *PGM object */<br />

rc = _RSLOBJ2(&qszrtvpr_pointer,<br />

RSLOBJ_TS_PGM,<br />

"QSZRTVPR",<br />

"QSYS");<br />

/* initialize the QSZRTVPR returned info structure */<br />

memset(rcvr, 0, sizeof(rcvr));<br />

/* initialize the QSZRTVPR error code structure */<br />

memset(&errcode, 0, sizeof(errcode));<br />

errcode.bytes_provided = sizeof(errcode);<br />

/* initialize the array of argument pointers for the QSZRTVPR API */<br />

qszrtvpr_argv[0] = &rcvr;<br />

qszrtvpr_argv[1] = &rcvrlen;<br />

qszrtvpr_argv[2] = &format;<br />

qszrtvpr_argv[3] = &prodinfo;<br />

qszrtvpr_argv[4] = &errcode;<br />

qszrtvpr_argv[5] = NULL;<br />

/* Call the <strong>i5</strong>/<strong>OS</strong> QSZRTVPR API from <strong>i5</strong>/<strong>OS</strong> <strong>PASE</strong> */<br />

rc = _PGMCALL(&qszrtvpr_pointer,<br />

(void*)&qszrtvpr_argv,<br />

0);<br />

/* Check the contents of bytes 63-64 of the returned information.<br />

If they are not '90' (in EBCDIC), the code load is NOT correctly<br />

installed */<br />

if (memcmp(&rcvr[63], &installed, 2) != 0)<br />

printf("<strong>i5</strong>/<strong>OS</strong> Option 33 is NOT installed\n");<br />

else<br />

printf("<strong>i5</strong>/<strong>OS</strong> Option 33 IS installed\n");<br />

return(0);<br />

Running <strong>i5</strong>/<strong>OS</strong> commands from <strong>i5</strong>/<strong>OS</strong> <strong>PASE</strong><br />

You can extend the capabilities of your <strong>i5</strong>/<strong>OS</strong> <strong>PASE</strong> program by running control language (CL)<br />

commands that use <strong>i5</strong>/<strong>OS</strong> functions.<br />

Use the systemCL runtime function to run an <strong>i5</strong>/<strong>OS</strong> command from within an <strong>i5</strong>/<strong>OS</strong> <strong>PASE</strong> program.<br />

<strong>i5</strong>/<strong>OS</strong> <strong>PASE</strong> 39

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!