HPlogo MPE/iX Intrinsics Reference Manual > Chapter 8 Command Definitions (HPMERGEEND-LOGSTATUS)

HPSWTONMNAME

MPE documents

Complete PDF
Table of Contents
Index

Edition 7 E0701 ♥
Edition 7 E0300
Edition 6 E0195

CM callable only.

Allows CM user programs, user libraries, and system code to invoke NM procedures as follows:
  • Convert CM references in an argument list to virtual NM addresses.

  • Change the execution mode.

  • Invoke the NM procedure specified by the CM caller.

Syntax



  I32                     CA        I16V     CA       I16V
  status := HPSWTONMNAME (procname, proclen, libname, liblen,
                          I16V    I16      I16      I16V
                          nparms, arglist, argdesc, functype);

Functional Return


status

I32 (assigned functional return)

Returns a 32-bit integer indicating the status of the call.

Parameters


procname

character array by reference (required)

Passes the target procedure name. The target procedure must be contained in an executable library (XL). If the value of procname is invalid, blank, or does not contain the NM procedure, NL.PUB.SYS is searched.

proclen

16-bit signed integer by value (required)

Passes the byte length of the procedure name.

libname

character array by reference (required)

Passes the name of the NM library to be searched. If the value of libname is invalid, blank or does not contain the NM procedure, NL.PUB.SYS is searched.


NOTE: By default, the search for the referenced library occurs in the procedure's group and account. In order to reference a library in some other group and/or account, you must be sure that libname is a fully qualified name (name.group.account)

liblen

16-bit signed integer by value (required)

Passes the byte length of the library name.

nparms

16-bit signed integer by value (required)

Passes the number of parameters to be passed to the target NM procedure. It specifies the length of the argdesc array. Account for any hidden parameters (for example, parameters, an extensible parameter list, and so forth).

arglist

16-bit signed integer array by reference (required)

Passes the actual parameters to be passed in the NM procedure.

argdesc

16-bit signed integer array by reference (required)

Passes integer codes describing the parameters held in the arglist array. Refer to Switch Programming Guide for code descriptions.

functype

16-bit signed integer by value (required)

Passes the data type of the value the target procedure returns if it is a function. If the target is not a function, the value of this parameter is zero. Refer to Switch Programming Guide for possible values.

Operation Notes


Do not use HPSWTONMNAME to invoke a native mode (NM) system supplied intrinsic. The result of the call may be unpredictable.

NM code can address the entire CM stack, so there is no copying of reference parameters. The length of each parameter is not needed because lengths are implied in the descriptor list.

Switches by name involve high system overhead on the first call per name, but substantially lower overhead on each subsequent call for that name. The HPSWTONMNAME, HPSWITCHTOCM, HPLOADCMPROCEDURE, and HPLOADNMPROC intrinsics perform a hashing function on the name of the other-mode procedure and store the plabel for that procedure in a system internal hash table. The LOADPROC intrinsic, does not perform hashing and involves high system overhead each time it is called.

The strings supplied as values of the procname and libname parameters must exactly match the names of the target NM routine and its NM library, respectively.


NOTE: By default, the search for the referenced library occurs in the procedure's group and account. In order to reference a library in some other group and/or account, you must be sure that libname is a fully qualified name (name.group.account)

Related Information


Intrinsics HPFIRSTLIBRARY, HPGETPROCPLABEL, HPLOADCMPROCEDURE, HPLOADNMPROC, HPSETCCODE, HPSWITCHTOCM, HPSWTONMPLABEL, HPUNLOADCMPROCEDURE, LOADPROC, UNLOADPROC
Manuals Switch Programming Guide




HPSWITCHTOCM


HPSWTONMPLABEL