General Information About How the Intrinsics Work [ HP DeskManager Intrinsics ] MPE/iX 5.0 Documentation
HP DeskManager Intrinsics
General Information About How the Intrinsics Work
System Security
[REV BEG]
An application must provide a sign on password (if one is set) before it
can perform any operations with the Intrinsics. In addition, all
database access is confined to the son Driver process, so preventing any
unauthorized access to it from the application program.[REV END]
Another important security provision prevents messages being sent on
behalf of others without authority. The User Intrinsics may only send
messages from the user which the application has signed on to. The
HPDGateSend intrinsic is only able to send messages from users associated
with the signed on gateway, that is only from users on mailnodes routed
out through that gateway.
These security features prevent unauthorized people sending messages on
behalf of other users, for example, the Managing Director, or reading
messages addressed to other users.
Parameter Passing
All parameters passed to the Intrinsics are passed by REFERENCE, that is
the address of a parameter is passed rather than its value.
Parameter Types
The parameter types that are passed to the Intrinsics are shown below:
Integer Parameters (I)
All binary numbers are passed as 32-bit integer values which can range
from -2,147,483,648 to 2,147,483,647. These are declared as follows:
Pascal: INTEGER
COBOL: PIC S9(9) COMP
FORTRAN: INTEGER *4
Status Parameter (S)
This is an array of 12 32-bit integers used to return information about
the success of an Intrinsic call. Typical definitions might be:
Pascal: Type STATUS_TYPE = ARRAY[1..12] OF INTEGER;
Var STATUS : STATUS_TYPE;
COBOL: 03 STATUS Pic S9(9) COMP OCCURS 12
FORTRAN: INTEGER *4 STATUS (12)
NOTE A definition of the Status Parameter is provided in the Pascal and
FORTRAN Include Files, and in the COBOL Copy Library.
Byte Arrays
These are for passing character based information. Pascal string
constructs should not be used for this purpose.
Pascal: Type PACn = PACKED ARRAY [1..n] OF CHAR;
Var BYTE_ARRAY : PACn;
COBOL: 03 BYTE-ARRAY Pic X OCCURS n
FORTRAN: CHARACTER *n BYTE_ARRAY
When byte arrays are passed as parameters, the Intrinsics concerned
expect them to have a certain length. Byte arrays longer than expected
can be passed as parameters; the excess will be ignored. Values passed
in byte arrays should be left justified.
Records
If records are to be used as parameters, their format can be found in the
relevant include files.
Status Returns
Every call to an Intrinsic has a status parameter. This is a 12 byte
array and is used to give the result of the Intrinsic call. Its 12
elements are used as described below:
STATUS [1] Describes in broad terms the result of the Intrinsic
call. Subsequent elements in the STATUS array provide
additional information as follows:
STATUS [2] Reserved for future use
STATUS [3] Number of erroneous transactions in the Transaction
File (where relevant)
STATUS [4] Position in file of first erroneous transaction (where
relevant). A value of 0 refers to the first record in
the file, and so on.
STATUS [5] Subsystem error (where relevant)
1 - FS error
2 - IMAGE error
10 - CREATEPROCESS error
11 - PROCINFO error
12 - GENMESSAGE error
13 - JOBINFO error
14 - SENDMAIL/RECEIVEMAIL error
15 - HPSWITCHTOCM error (MPE/XL only)
STATUS [6] Error value if STATUS [5] <> 0. For example, if
STATUS [5] has a value of 1, STATUS [6] gives the
number of the FS error which has occurred
STATUS [7-12] Other, dependent on STATUS [1]
The STATUS [1] field will have a value in the range -32768 to 32767 and
all error numbers will have a unique meaning regardless of sign. If its
value is 0, the Intrinsic call was successfully completed without any
errors or exception conditions.
If the main status field is positive this indicates that one of two
things has happened. Either the call was successful but an exception
condition arose which fell inside the "limits of acceptable failure" as
defined in the Session Profile file, or some other warning condition
arose.
If the main status field is negative, this either indicates an exception
condition outside the "limits of acceptable failure" or some other
failure condition which results in termination of processing.
Error Condition STATUS[1] STATUS[3] STATUS[4] Process to end?
None 0 0 0 Yes
Exception
within acc. >0 n n Yes
failure
warning >0 n n Yes
outside acc. <0 n n No
failure
Failure <0 n n No
A full list of status returns is given in Appendix B .
Split-Stack Calls
Split-stack calls to the Intrinsics are not supported.
MPE/iX 5.0 Documentation