|
The following code works; it uses the technique from the June 2000 thread
"setsppfp bug" in the archives, in which the SYP is passed as a 16-byte
character variable "by value".
I changed from the _SETSPPFP builtin to the setsppfp function, because
_SETSPPFP caused the compiler to dump.
Also, it doesn't use the names of the parms on the procedure declarations as
variables, but defines other stand-alone variables.
H bnddir('QC2LE')
d MatPco PR * ExtProc('_PCOPTR')
d CrtS PR ExtProc('_CRTS')
d PspcPtr *
d Pcrt_Tmplt * value
d SetSppFp PR * ExtProc('setsppfp')
d PsysPtr 16a value
d Crts_Tmplt ds
...
...
d ds
d SysPtrA 1 16a
d SysPtr 1 16*
d Pco s *
d PcoPtr s * dim(8) based(Pco)
d SpcPtr s *
d Spc s 4096 based(SpcPtr)
/free
Pco = Matpco;
Crt_Obj_Type = x'19';
Crt_Obj_STyp = x'34';
Crt_Obj_Name = 'USERSPACE';
Crt_Context = PcoPtr(5); // QTEMP
CrtS (SysPtr:%addr(Crts_Tmplt)); // returns a SYP to 1934USERSPACE
SpcPtr = SetSppFp(SysPtrA); // address to PCS
/end-free
--Dave
On Friday 15 November 2002 06:28, Giuseppe Costagliola wrote:
>The _CRTS allows to create a (user) space in USER DOMAIN. It returns a SYP
>to this newly created object.
>
>Then _SETSPPFP should set a SPP to this space but it seems to address an
>area in the PCS instead.
>
>I've tried with procptr, redefinitions of pointers, etc. but unsuccesfully.
>
>Where am I wrong?
>
>Giuseppe Costagliola
>gcosta@sidin.it
>
>-------------------------------------------------
>
>d MatPco PR * ExtProc('_PCOPTR')
>d Pco s *
>d PcoPtr s * dim(8) based(Pco)
>
>d CrtS PR ExtProc('_CRTS')
>d SpcPtr *
>d Crt_Tmplt * value
>
>d SetSppFp PR * ExtProc('_SETSPPFP')
>d SysPtr *
>
>. . .
>. . .
>
>d Spc s 4096 based(SpcPtr)
>
> /free
>
> Pco = Matpco;
>
> Crt_Obj_Type = x'19';
> Crt_Obj_STyp = x'34';
> Crt_Obj_Name = 'USERSPACE';
> Crt_Context = PcoPtr(5); // QTEMP
>
> CrtS (SpcPtr:%addr(Crt_Tmplt)); // returns a SYP to 1934USERSPACE
> SpcPtr = SetSppFp(SpcPtr); // address to PCS
>
> /end-free
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.