|
Forgive a newbie type question or two here, but I am stuck and even if I
cannot do what I want, I am very curious to find out how this should be done
and what I did wrong.
I have the following C/400 program which should retrieve a pointer to some
information about a *PNLGRP type object (type 0x19 subtype 0x15).
#include <QSYSINC/MIH/RSLVSP>
#include <QSYSINC/MIH/SETSPPFP>
#include <stdio.h>
void * getspcptr(int objType, char * objName, char * libName, int reqAuth)
{
_SYSPTR objPtr;
_SPCPTR spcPtr;
char * cp;
objPtr = rslvsp(objType, objName, libName, reqAuth);
spcPtr = setsppfp(objPtr);
cp = (char *) spcPtr;
return((void*)spcPtr);
}
int main(void)
{
void * ptr;
ptr = getspcptr(0x1915, "LM861P", "GRHLIB", 0);
return 1;
}
What happens when I run it in debug (V4R4M0, security level 40) is that objPtr
appears to be assigned correctly.
EVAL objPtr
objPtr =
SYP:LM861P :1915:GRHLIB :000000000
0000000
Then the next line (assigning spcPtr using the setsppfp function) returns error
MCH6801 (Object domain or hardware storage protection violation.). Apparently,
there is some kind of system-level protection preventing me from even viewing
the underlying details of an object (in this case created by me, I also have
*ALLOBJ authority). I am guessing that this program needs to be a
"system-state" program to do this or I have made some other sort of mistake in
its implementation.
I have also tried to get this to work calling the C wrappers for these MI
instructions from RPG, but with at least as bad luck.
The questions I have are as follows:
1. Do you see anything wrong in the source code I submitted?
2. Should I be able to do this?
3. If the answer in 2 is yes, how?
4. If I need system-state, can I write a callable module or program which is in
system-state? Again, how? (respond off-list).
Thanks in advance,
Glenn Howald
Programmer/Analyst
Gateway Software Corporation
+---
| This is the MI Programmers Mailing List!
| To submit a new message, send your mail to MI400@midrange.com.
| To subscribe to this list send email to MI400-SUB@midrange.com.
| To unsubscribe from this list send email to MI400-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: dr2@cssas400.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.