| Quick Reference | 
For detailed information on the individual functions, use the selection box on the right.
int nni_get_interface( int iVersion, void** ppnni_func );
The function returns an instance of the Natural Native Interface.
An application calls this function after having retrieved and loaded the interface library with platform depending system calls. The function returns a pointer to a structure that contains function pointers to the individual interface functions. The functions returned in the structure may differ between interface versions.
Instead of a specific interface version, the caller can also specify
                            the constant NNI_VERSION_CURR, which always refers to the most
                            recent interface version. The interface version number belonging to a given
                            Natural version is defined in the header file natni.h that
                            is delivered with that version. In Natural Version
                            n.n, the interface version number is defined as
                            NNI_VERSION_nn.
                            NNI_VERSION_CURR is also defined as
                            NNI_VERSION_nn. If the Natural version
                            against which the function is called does not support the requested interface
                            version, the error code NNI_RC VERSION_ERROR is returned.
                            Otherwise the return code is NNI_RC_OK.
               
The pointer returned by the function represents one instance of the interface. In order to use this interface instance, the application holds on to that pointer and passes it to subsequent interface calls.
Usually the application will subsequently initialize a Natural
                            session by calling nni_initialize on the
                            given instance. After the application has finished using that Natural session,
                            it calls nni_uninitialize on that
                            instance. After that it can initialize a different Natural session on the same
                            interface instance. After the application has finished using the interface
                            instance entirely, it calls nni_free_interface on
                            that instance.
               
| Parameter | Meaning | 
|---|---|
| iVersion | Interface version number.
                                             ( NNI_VERSION_nnorNNI_VERSION_CURR). | 
| ppnni_func | Points to an NNI interface instance on return. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_VERSION_ERROR | 
int nni_free_interface(void* pnni_func);
An application calls this function after it has finished using the interface instance and has uninitialized the Natural session it hosts. The function frees the resources occupied by that interface instance.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | 
int nni_initialize(void* pnni_func, const char* szCmdLine, void*, void*);
The function initializes a Natural session with a given command line. The syntax and semantics of the command line is the same as when Natural is started interactively. If a Natural session has already been initialized on the given interface instance, that session is implicitly uninitialized before the new session is initialized.
The command line must be specified in the way that the Natural
                            initialization can be completed without user interaction. This means especially
                            that if a program is passed on the stack or a startup program is specified,
                            that program must not perform an INPUT statement that is not
                            satisfied from the stack. Otherwise the subsequent behavior of the Natural
                            session is undetermined.
               
The Natural session is initialized as batch session and in server mode. This means that the usage of certain statements and commands in the executed Natural modules is restricted.
When initializing a Natural session under Natural Security, the
                            command line must contain a LOGON command to a freely
                            chosen default library under which the session will be started, and an
                            appropriate user ID and password.
               
Example:
int iRes = pnni_func->nni_initialize( pnni_func, "STACK=(LOGON,MYLIB,MYUSER,MYPASS)", 0, 0);
If the application later calls nni_logon to a different
                            library with a different user ID and afterwards calls
                            nni_logoff, the
                            Natural session will be reset to the library and user ID that was passed during
                            nni_initialize.
               
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| szCmdLine | Natural command line. May be a null pointer. | 
| void* | For future use. Must be a null pointer. | 
| void* | For future use. Must be a null pointer. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_PARM_ERROR | |
| rc, where
                                             rc < NNI_RC_SERR_OFFSET | Natural startup error. The real Natural startup error
                                             number as documented in
                                             Natural Startup Errors (which is
                                             part of the Operations documentation) can be determined by
                                             the following calculation: startup-error-nr = -
                                                  (rc -  Warnings that occur during session initialization are ignored. | 
| > 0 | Natural error number. | 
int nni_is_initialized( void* pnni_func, int* piIsInit );
The function checks if the interface instance contains an initialized Natural session.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| piIsInit | Returns 0, if no Natural session is initialized, a non-zero value otherwise. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_PARM_ERROR | 
int nni_uninitialize(void* pnni_func);
The function uninitializes the Natural session hosted by the given interface instance.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | 
int nni_enter(void* pnni_func);
The function lets the current thread wait for exclusive access to
                            the interface instance and the Natural session it hosts. A thread calls this
                            function if it wants to issue a series of interface calls that may not be
                            interrupted by other threads. The thread releases the exclusive access to the
                            interface instance by calling nni_leave.
               
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | 
int nni_try_enter(void* pnni_func);
The function behaves like nni_enter except that it does
                            not block the thread and instead always returns immediately. If a different
                            thread already has exclusive access to the interface instance, the function
                            returns NNI_RC_LOCKED.
               
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_LOCKED | 
int nni_leave(void* pnni_func);
The function releases exclusive access to the interface instance and allows other threads to access that instance and the Natural session it hosts.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | 
int nni_logon(void* pnni_func, const char* szLibrary, const char* szUser, const char* szPassword);
The function performs a
                            LOGON to the specified
                            Natural library.
               
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| szLibrary | Name of the Natural library. | 
| szUser | Name of the Natural user. May be a null pointer, if the
                                             Natural session is not running under Natural Security or if AUTO=ONwas
                                             used during initialization. | 
| szPassword | Password of that user. May be a null pointer, if the
                                             Natural session is not running under Natural Security or if AUTO=ONwas used during initialization.. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| > 0 | Natural error number. | 
int nni_logoff(void* pnni_func);
The function performs a
                            LOGOFF from the current
                            Natural library. This corresponds to a
                            LOGON to the previously
                            active library and user ID.
               
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| > 0 | Natural error number. | 
int nni_callnat(void* pnni_func, const char* szName, int iParm, struct parameter_description* rgDesc, struct natural_exception* pExcep);
The function calls a Natural subprogram.
The function receives its parameters as an array of
                            parameter_description structures. The caller creates
                            these structures using NNI functions in the following way:
               
Use one the functions create_parm or
                                      create_module_parm to create an appropriate parameter set for the
                                      subprogram.
                     
If you have used create_parm, use the functions
                                      init_parm_* to initialize each parameter to the appropriate
                                      Natural data format. If you have used create_module_parm, the
                                      parameters are already initialized to the appropriate Natural data format.
                     
Assign a value to each parameter, using one the functions
                                      nni_put_parm or
                                      nni_put_parm_array.
                                      
                     
Call nni_get_parm on each
                                      parameter in the set. This fills the
                                      parameter_description structures.
                     
Pass the array of parameter_description
                                      structures to the function nni_callnat.
                     
After the call has been executed, extract the modified parameter
                                      values from the parameter set using the function
                                      nni_get_parm or
                                      nni_get_parm_array.
                     
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| szName | Name of the Natural subprogram. | 
| iParm | Number of parameters. Indicates the number of
                                             occurrences of the array rgDesc. | 
| rgDesc | An array of parm_descriptionstructures containing the parameters for the subprogram. If the subprogram does
                                             not expect parameters, the caller passes a null pointer. | 
| pExcep | Pointer to a natural_exceptionstructure. If a Natural error occurs during execution of the subprogram, this
                                             structure is filled with Natural error information. The caller may specify a
                                             null pointer. In this case no extended error information is returned. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_NO_MEMORY | |
| > 0 | Natural error number. | 
int nni_create_object(void* pnni_func, const char* szName, int iParm, struct parameter_description* rgDesc, struct natural_exception* pExcep);
Creates a Natural object (an instance of a Natural class).
The function receives its parameters as a one-element array of
                            parameter_description structures. The caller creates the
                            structures using NNI functions in the following way:
               
Use the function nni_create_parm to create
                                      parameter set with one element.
                     
Use the function nni_init_parm_s to
                                      initialize the parameter with the type HANDLE OF OBJECT.
                     
Call nni_get_parm_info on
                                      this parameter. This fills the parameter_description
                                      structure.
                     
Pass the parameter_description structure
                                      to the function nni_create_object.
                     
After the call has been executed, extract the modified parameter
                                      value from the parameter set using one the function
                                      nni_get_parm.
                     
The parameters passed in rgDesc have the
                            following meaning:
               
The first (and only) parameter must be initialized with the data
                                      type HANDLE OF OBJECT and contains on return the Natural object
                                      handle of the newly created object.
                     
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| szName | Name of the class. | 
| iParm | Number of parameters. Indicates the number of
                                             occurrences of the array rgDesc. | 
| rgDesc | An array of parm_descriptionstructures containing the parameters for the object creation. The caller always
                                             passes one parameter, which will contain the object handle on return. | 
| pExcep | Pointer to a natural_exceptionstructure. If a Natural error occurs during object creation, this structure is
                                             filled with Natural error information. The caller may specify a null pointer.
                                             In this case no extended exception information is returned. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_NO_MEMORY | |
| > 0 | Natural error number. | 
int nni_send_method(void* pnni_func, const char* szName, int iParm, struct parameter_description* rgDesc, struct natural_exception* pExcep);
Sends a method call to a Natural object (an instance of a Natural class).
The function receives its parameters as an array of
                            parameter_description structures. The caller creates
                            these structures using NNI functions in the following way:
               
Use the function nni_create_parm or
                                      nni_create_method_parm
                                      to create a matching parameter set.
                     
If you have used create_parm, use the functions
                                      init_parm_* to initialize each parameter to the appropriate
                                      Natural data format. If you have used
                                      nni_create_method_parm,
                                      the parameters are already initialized to the appropriate Natural data
                                      format.
                     
Assign a value to each parameter using one the functions
                                      nni_put_parm or
                                      nni_put_parm_array.
                     
Call nni_get_parm_info on
                                      each parameter in the set. This fills the
                                      parameter_description structures.
                     
Pass the array of parameter_description
                                      structures to the function nni_send_method.
                     
After the call has been executed, extract the modified parameter
                                      values from the parameter set using one of the
                                      nni_get_parm
                                      functions.
                     
The parameters passed in rgDesc have the
                            following meaning:
               
The first parameter contains the object handle.
The second parameter must be initialized to the data type of the method return value. If the method does not have a return value, the second parameter remains not initialized. On return from the method call, this parameter contains the return value of the method.
The remaining parameters are the method parameters.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| szName | Name of the method. | 
| iParm | Number of parameters. Indicates the number of
                                             occurrences of the array rgDesc. This is always 2 + the
                                             number of method parameters. | 
| rgDesc | An array of parm_descriptionstructures containing the parameters for the method. If the method does not
                                             expect parameters, the caller still passes two parameters, the first for the
                                             object handle and the second for the return value. | 
| pExcep | Pointer to a natural_exceptionstructure. If a Natural error occurs during execution of the method, this
                                             structure is filled with Natural error information. The caller may specify a
                                             null pointer. In this case no extended exception information is
                                             returned. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_NO_MEMORY | |
| > 0 | Natural error number. | 
int nni_get_property(void* pnni_func, const char* szName, int iParm, struct parameter_description* rgDesc, struct natural_exception* pExcep);
Retrieves a property value of a Natural object (an instance of a Natural class).
The function receives its parameters as an array of
                            parameter_description structures. The caller creates
                            these structures using NNI functions in the following way:
               
Use the function nni_create_parm or
                                      nni_create_method_parm
                                      to create a matching parameter set.
                     
If you have used create_parm, use the functions
                                      init_parm_* to initialize each parameter to the appropriate
                                      Natural data format. If you have used create_method_parm, the
                                      parameters are already initialized to the appropriate Natural data format.
                     
Assign a value to each parameter using one the functions
                                      nni_put_parm or
                                      nni_put_parm_array.
                     
Call nni_get_parm_info on
                                      each parameter in the set. This fills the
                                      parameter_description structures.
                     
Pass the array of parameter_description
                                      structures to the function nni_send_method.
                     
After the call has been executed, extract the modified parameter
                                      values from the parameter set using one of the
                                      nni_get_parm
                                      functions.
                     
The parameters passed in rgDesc have the
                            following meaning:
               
The first parameter contains the object handle.
The second parameter is initialized to the data type of the property. On return from the property access, this parameter contains the property value.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| szName | Name of the property. | 
| iParm | Number of parameters. Indicates the number of
                                             occurrences of the array rgDesc. This is always
                                             2. | 
| rgDesc | An array of parm_descriptionstructures containing the parameters for the property access. The caller always
                                             passes two parameters, the first for the object handle and the second for the
                                             returned property value. | 
| pExcep | Pointer to a natural_exceptionstructure. If a Natural error occurs during property access, this structure is
                                             filled with Natural error information. The caller may specify a null pointer.
                                             In this case no extended exception information is returned. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_NO_MEMORY | |
| > 0 | Natural error number. | 
int nni_set_property(void* pnni_func, const char* szName, int iParm, struct parameter_description* rgDesc, struct natural_exception* pExcep);
Assigns a property value to a Natural object (an instance of a Natural class).
The function receives its parameters as an array of
                            parameter_description structures. The caller creates
                            these structures using NNI functions in the following way:
               
Use the function nni_create_parm or
                                      nni_create_prop_parm
                                      to create a matching parameter set.
                     
If you have used create_parm, use the functions
                                      init_parm_* to initialize each parameter to the appropriate
                                      Natural data format. If you have used create_prop_parm, the
                                      parameters are already initialized to the appropriate Natural data format.
                                      Assign a value to each parameter using one of the
                                      nni_put_parm
                                      functions.
                     
Assign a value to each parameter using one the functions
                                      nni_put_parm or
                                      nni_put_parm_array.
                     
Call nni_get_parm_info on
                                      each parameter in the set. This fills the
                                      parameter_description structures.
                     
Pass the array of parameter_description
                                      structures to the function nni_set_property.
                     
The parameters passed in rgDesc have the
                            following meaning:
               
The first parameter contains the object handle.
The second parameter contains the property value.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| szName | Name of the property. | 
| iParm | Number of parameters. Indicates the number of
                                             occurrences of the array rgDesc. This is always
                                             2. | 
| rgDesc | An array of parm_descriptionstructures containing the parameters for the property access. The caller always
                                             passes two parameters, the first for the object handle and the second for the
                                             property value. | 
| pExcep | Pointer to a natural_exceptionstructure. If a Natural error occurs during property access, this structure is
                                             filled with Natural error information. The caller may specify a null pointer.
                                             In this case no extended exception information is returned. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_NO_MEMORY | |
| > 0 | Natural error number. | 
int nni_delete_object(void* pnni_func, int iParm, struct parameter_description* rgDesc, struct natural_exception* pExcep);
Deletes a Natural object (an instance of a Natural class) created
                            with nni_create_object.
               
The function receives its parameters as a one-element array of
                            parameter_description structures. The caller creates the
                            structures using NNI functions in the following way:
               
Use the function nni_create_parm to create
                                      parameter set with one element.
                     
Use the function nni_init_parm_s to
                                      initialize the parameter with the type HANDLE OF OBJECT.
                     
Assign a value to the parameter using one the functions
                                      nni_put_parm.
                     
Call nni_get_parm_info on
                                      this parameter. This fills the parameter_description
                                      structure.
                     
Pass the parameter_description structure
                                      to the function nni_delete_object.
                     
The parameters passed in rgDesc have the
                            following meaning:
               
The first (and only) parameter must be initialized with the data
                                      type HANDLE OF OBJECT and contains the Natural object handle of
                                      the object to be deleted.
                     
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| szName | Name of the class. | 
| iParm | Number of parameters. Indicates the number of
                                             occurrences of the array rgDesc. This is always
                                             1. | 
| rgDesc | An array of parm_descriptionstructures containing the parameters for the object creation. The caller always
                                             passes one parameter, which contains the object handle. | 
| pExcep | Pointer to a natural_exceptionstructure. If a Natural error occurs during object creation, this structure is
                                             filled with Natural error information. The caller may specify a null pointer.
                                             In this case no extended exception information is returned. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_NO_MEMORY | |
| > 0 | Natural error number. | 
int nni_create_parm(void* pnni_func, int iParm, void** pparmhandle);
Creates a set of parameters that can be passed to a Natural module.
The parameters contained in the set are not yet initialized to
                            specific Natural data types. Before using the parameter set in a call to
                            nni_callnat,
                            nni_create_object,
                            nni_send_method,
                            nni_set_property or
                            nni_get_property:
               
Initialize each parameter to the required Natural data type
                                      using one of the functions nni_init_parm_s,
                                      nni_init_parm_sa,
                                      nni_init_parm_d
                                      or nni_init_parm_da.
                     
Assign a value to each parameter using one of the functions
                                      nni_put_parm or
                                      nni_put_parm_array.
                     
Turn each parameter into a
                                      parm_description structure using the function
                                      nni_get_parm_info.
                     
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Requested number of parameters. The maximum number of parameters is 32767. | 
| pparmhandle | Points a to a pointer to a parameter set on return. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_ILL_PNUM | |
| > 0 | Natural error number. | 
int nni_create_module_parm(void* pnni_func, char chType, const char* szName, void** pparmhandle);
Creates a set of parameters that can be used in a call to
                            nni_callnat. The
                            function enables an application to dynamically explore the signature of a
                            callable Natural module.
               
The parameters contained in the returned set are already initialized
                            to Natural data types according to the parameter data area of the specified
                            module. Before using the parameter set in a call to
                            nni_callnat:
               
Assign a value to each parameter using one of the functions
                                      nni_put_parm or
                                      nni_put_parm_array.
                                      
                     
Turn each parameter into a
                                      parm_description structure using the function
                                      nni_get_parm_info.
                     
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| chType | Type of the Natural module. Always N(for
                                             subprogram). | 
| szName | Name of the Natural module. | 
| pparmhandle | Points a to a pointer to a parameter set on return. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| > 0 | Natural error number. | 
int nni_create_method_parm( void* pnni_func, const char* szClass, const char* szMethod, void** pparmhandle );
Creates a set of parameters that can be used in a call to
                            nni_send_method. The
                            function enables an application to dynamically explore the signature of a
                            method of a Natural class.
               
The returned parameter set contains not only the method parameters,
                            but also the other parameters required by
                            nni_send_method. This
                            means: If the method has n parameters, the parameter
                            set contains n + 2 parameters.
               
The first parameter in the set is initialized to the data type
                                      HANDLE OF OBJECT.
                     
The second parameter in the set is initialized to the data type of the method return value. If the method does not have a return value, the second parameter is not initialized.
The remaining parameters in the set are initialized to the data types of the method parameters.
Before using the parameter set in a call to
                            nni_send_method:
               
Assign a value to each parameter using one of the functions
                                      nni_put_parm or
                                      nni_put_parm_array.
                     
Turn each parameter into a
                                      parm_description structure using the function
                                      nni_get_parm_info.
                     
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| szClass | Name of the Natural class. | 
| szMethod | Name of the Natural method. | 
| pparmhandle | Points a to a pointer to a parameter set on return. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| > 0 | Natural error number. | 
int nni_create_prop_parm(void* pnni_func, const char* szClass, const char* szProp,void** pparmhandle);
Creates a set of parameters that can be used in a call to
                            nni_get_property or
                            nni_set_property. The
                            returned parameter set contains all parameters required by
                            nni_get_property or
                            nni_set_property. The
                            function enables an application to determine the data type of a property of a
                            Natural class.
               
The first parameter in the set is initialized to the data type
                                      HANDLE OF OBJECT.
                     
The second parameter in the set is initialized to the data type of the property.
Before using the parameter set in a call to
                            nni_get_property or
                            nni_set_property:
               
Assign a value to each parameter using one of the functions
                                      nni_put_parm or
                                      nni_put_parm_array.
                     
Turn each parameter into a
                                      parm_description structure using the function
                                      nni_get_parm_info.
                     
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| szClass | Name of the Natural class. | 
| szProp | Name of the Natural property. | 
| pparmhandle | Points a to a pointer to a parameter set on return. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| > 0 | Natural error number. | 
int nni_parm_count( void* pnni_func, void* parmhandle, int* piParm )
The function retrieves the number of parameters in a parameter set.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| parmhandle | Pointer to a parameter set. | 
| piParm | Returns the number of parameters in the parameter set. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | 
int nni_init_parm_s(void* pnni_func, int iParm, void* parmhandle, char chFormat, int iLength, int iPrecision, int iFlags);
Initializes a parameter in a parameter set to a static data type.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Index of the parameter. The first parameter in the set has the index 0. | 
| parmhandle | Pointer to a parameter set. | 
| chFormat | Natural data type of the parameter. | 
| iLength | Natural length of the parameter. | 
| iPrecision | Number of decimal places ( NNI_TYPE_NUMandNNI_TYPE_PACKonly). | 
| iFlags | Parameter flags. The following flags can be used:  
                                                   | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_ILL_PNUM | |
| NNI_RC_NO_MEMORY | |
| NNI_RC_BAD_FORMAT | |
| NNI_RC_BAD_LENGTH | 
int nni_init_parm_sa (void* pnni_func, int iParm, void* parmhandle, char chFormat, int iLength, int iPrecision, int iDim, int* rgiOcc, int iFlags);
Initializes a parameter in a parameter set to an array of a static data type.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Index of the parameter. The first parameter in the set has the index 0. | 
| parmhandle | Pointer to a parameter set. | 
| chFormat | Natural data type of the parameter. | 
| iLength | Natural length of the parameter. | 
| iPrecision | Number of decimal places ( NNI_TYPE_NUMandNNI_TYPE_PACKonly). | 
| iDim | Array dimension of the parameter. | 
| rgiOcc | Three dimensional array of int values, indicating the occurrence count for each dimension. The occurrence count for unused dimensions must be specified as 0. | 
| iFlags | Parameter flags. The following flags can be used:  
                                                   NNI_FLG_*VAR*flags
                                             is set, the array is an x-array. In each dimension only the lower bound or the
                                             upper bound (not both) can be variable. Therefore for instance the flagIF4_FLG_LBVAR_0may not be combined withIF4_FLG_UBVAR_0. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_ILL_PNUM | |
| NNI_RC_NO_MEMORY | |
| NNI_RC_BAD_FORMAT | |
| NNI_RC_BAD_LENGTH | |
| NNI_RC_BAD_DIM | |
| NNI_RC_BAD_BOUNDS | 
int nni_init_parm_d(void* pnni_func, int iParm, void* parmhandle, char chFormat, int iFlags);
Initializes a parameter in a parameter set to a dynamic data type.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Index of the parameter. The first parameter in the set has the index 0. | 
| parmhandle | Pointer to a parameter set. | 
| chFormat | Natural data type of the parameter
                                             ( NNI_TYPE_ALPHAorNNI_TYPE_BIN). | 
| iFlags | Parameter flags. The following flags can be used:  
                                                   | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_ILL_PNUM | |
| NNI_RC_NO_MEMORY | |
| NNI_RC_BAD_FORMAT | 
int nni_init_parm_da (void* pnni_func, int iParm, void* parmhandle, char chFormat, int iDim, int* rgiOcc, int iFlags);
Initializes a parameter in a parameter set to an array of a dynamic data type.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Index of the parameter. The first parameter in the set has the index 0. | 
| parmhandle | Pointer to a parameter set. | 
| chFormat | Natural data type of the parameter
                                             ( NNI_TYPE_ALPHAorNNI_TYPE_BIN). | 
| iDim | Array dimension of the parameter. | 
| rgiOcc | Three dimensional array of int values, indicating the occurrence count for each dimension. The occurrence count for unused dimensions must be specified as 0. | 
| iFlags | Parameter flags. The following flags can be used:  
                                                   NNI_FLG_*VAR*flags
                                             is set, the array is an x-array. In each dimension only the lower bound or the
                                             upper bound (not both) can be variable. Therefore for instance the flagIF4_FLG_LBVAR_0may not be combined withIF4_FLG_UBVAR_0. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_ILL_PNUM | |
| NNI_RC_NO_MEMORY | |
| NNI_RC_BAD_FORMAT | |
| NNI_RC_BAD_DIM | |
| NNI_RC_BAD_BOUNDS | 
int nni_get_parm_info (void* pnni_func, int iParm, void* parmhandle, struct parameter_description* pDesc);
Returns detailed information about a specific parameter in a parameter set.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Index of the parameter. The first parameter in the set has the index 0. | 
| parmhandle | Pointer to a parameter set. | 
| pDesc | Parameter description structure. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_ILL_PNUM | 
int nni_get_parm(void* pnni_func, int iParm, void* parmhandle, int iBufferLength, void* pBuffer);
Returns the value of a specific parameter in a parameter set. The
                            value is returned in the buffer at the address specified in
                            pBuffer, with the size specified in
                            iBufferLength. On successful return, the buffer contains
                            the data in Natural internal format. See
                            Natural Data
                               Types on how to interpret the contents of the buffer.
               
If the length of the parameter according to the Natural data type is
                            greater than iBufferLength, Natural truncates the data
                            to the given length and returns the code NNI_RC_DATA_TRUNC. The
                            caller can use the function nni_get_parm_info to
                            request the length of the parameter value in advance.
               
If the length of the parameter according to the Natural data type is
                            smaller than iBufferLength, Natural fills the buffer
                            according to the length of the parameter and returns the length of the copied
                            data in the return code.
               
If the parameter is an array, the function returns the whole array
                            in the buffer. This makes sense only for fixed size arrays of fixed size
                            elements, because in other cases the caller cannot interpret the contents of
                            the buffer. In order to retrieve an individual occurrence of an arbitrary array
                            use the function nni_get_parm_array.
               
If no memory of the size specified in
                            iBufferLength is allocated at the address specified in
                            pBuffer, the results of the operation are unpredictable.
                            Natural only checks that pBuffer is not null.
               
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Index of the parameter. The first parameter in the set has the index 0. | 
| parmhandle | Pointer to a parameter set. | 
| iBufferLength | Length of the buffer specified in pBuffer. | 
| pBuffer | Buffer in which the value is returned. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_ILL_PNUM | |
| NNI_RC_DATA_TRUNC | |
| = n, where n > 0 | Successful operation, but only n bytes were returned in the buffer. | 
int nni_get_parm_array(void* pnni_func, int parmnum, void* parmhandle, int iBufferLength, void* pBuffer, int* rgiInd);
Returns the value of a specific occurrence of a specific array
                            parameter in a parameter set. The only difference to
                            nni_get_parm is
                            that array indices can be specified. The indices for unused dimensions must be
                            specified as 0.
               
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Index of the parameter. The first parameter in the set has the index 0. | 
| parmhandle | Pointer to a parameter set. | 
| iBufferLength | Length of the buffer specified in pBuffer. | 
| pBuffer | Buffer in which the value is returned. | 
| rgiInd | Three dimensional array of int values, indicating a specific array occurrence. The indices start with 0. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_ILL_PNUM | |
| NNI_RC_DATA_TRUNC | |
| NNI_RC_NOT_ARRAY | |
| NNI_RC_BAD_INDEX_0 | |
| NNI_RC_BAD_INDEX_1 | |
| NNI_RC_BAD_INDEX_2 | |
| = n, where n > 0 | Successful operation, but only n bytes were returned. | 
int nni_get_parm_array_length(void* pnni_func, int iParm, void* parmhandle, int* piLength, int* rgiInd);
Returns the length of a specific occurrence of a specific array parameter in a parameter set.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Index of the parameter. The first parameter in the set has the index 0. | 
| parmhandle | Pointer to a parameter set. | 
| piLength | Pointer to an int in which the length of the value is returned. | 
| rgiInd | Three dimensional array of int values, indicating a specific array occurrence. The indices start with 0. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_ILL_PNUM | |
| NNI_RC_DATA_TRUNC | |
| NNI_RC_NOT_ARRAY | |
| NNI_RC_BAD_INDEX_0 | |
| NNI_RC_BAD_INDEX_1 | |
| NNI_RC_BAD_INDEX_2 | 
int nni_put_parm(void* pnni_func, int iParm, void* parmhandle, int iBufferLength, const void* pBuffer);
Assigns a value to a specific parameter in a parameter set. The
                            value is passed to the function in the buffer at the address specified in
                            pBuffer, with the size specified in
                            iBufferLength. See
                            Natural Data
                               Types on how to prepare the contents of the buffer.
               
If the length of the parameter according to the Natural data type is smaller than the given buffer length, the data will be truncated to the length of the parameter. The rest of the buffer will be ignored. If the length of the parameter according to the Natural data type is greater than the given buffer length, the data will copied only to the given buffer length, the rest of the parameter value stays unchanged. See Natural Data Types on the internal length of Natural data types.
If the parameter is a dynamic variable, it is automatically resized according to the given buffer length.
If the parameter is an array, the function expects the whole array
                            in the buffer. This makes sense only for fixed size arrays of fixed size
                            elements, because in other cases the caller cannot provide the correct contents
                            of the buffer. In order to assign a value to an individual occurrence of an
                            arbitrary array use the function nni_put_parm_array.
               
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Index of the parameter. The first parameter in the set has the index 0. | 
| parmhandle | Pointer to a parameter set. | 
| iBufferLength | Length of the buffer specified in pBuffer. | 
| pBuffer | Buffer in which the value is passed. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_ILL_PNUM | |
| NNI_RC_WRT_PROT | |
| NNI_RC_DATA_TRUNC | |
| NNI_RC_NO_MEMORY | |
| = n, where n > 0 | Successful operation, but only n bytes of the buffer were used. | 
int nni_put_parm_array(void* pnni_func, int iParm, void* parmhandle, int iBufferLength, const void* pBuffer, int* rgiInd);
Assigns a value to a specific occurrence of a specific array
                            parameter in a parameter set. The only difference to
                            nni_get_parm is
                            that array indices can be specified. The indices for unused dimensions must be
                            specified as 0.
               
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Index of the parameter. The first parameter in the set has the index 0. | 
| parmhandle | Pointer to a parameter set. | 
| iBufferLength | Length of the buffer specified in pBuffer. | 
| pBuffer | Buffer in which the value is passed. | 
| rgiInd | Three dimensional array of int values, indicating a specific array occurrence. The indices start with 0. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_ILL_PNUM | |
| NNI_RC_WRT_PROT | |
| NNI_RC_DATA_TRUNC | |
| NNI_RC_NO_MEMORY | |
| NNI_RC_NOT_ARRAY | |
| NNI_RC_BAD_INDEX_0 | |
| NNI_RC_BAD_INDEX_1 | |
| NNI_RC_BAD_INDEX_2 | |
| = n, where n > 0 | Successful operation, but only n bytes of the buffer were used. | 
int nni_resize_parm_array(void* pnni_func, int iParm, void* parmhandle, int* rgiOcc);
Changes the occurrence count of a specific x-array parameter in a parameter set. For an n-dimensional array an occurrence count must be specified for all n dimensions. If the dimension of the array is less than 3, the value 0 must be specified for the not used dimensions.
The function tries to resize the occurrence count of each dimension either by changing the lower bound or the upper bound, whatever is appropriate for the given x-array.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iParm | Index of the parameter. The first parameter in the set has the index 0. | 
| parmhandle | Pointer to a parameter set. | 
| rgiOcc | Three dimensional array of int values, indicating the new occurrence count of the array. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| NNI_RC_ILL_PNUM | |
| NNI_RC_WRT_PROT | |
| NNI_RC_DATA_TRUNC | |
| NNI_RC_NO_MEMORY | |
| NNI_RC_NOT_ARRAY | |
| NNI_RC_NOT_RESIZABLE | |
| > 0 | Natural error number. | 
int nni_delete_parm(void* pnni_func, void* parmhandle);
Deletes the specified parameter set.
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| parmhandle | Pointer to a parameter set. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | 
int nni_from_string(void* pnni_func, const char* szString, char chFormat, int iLength, int iPrecision, int iBufferLength, void* pBuffer);
Converts the string representation of a Natural P, N, D or T value
                            into the internal representation of the value, as it is used in the functions
                            nni_get_parm,
                            nni_get_parm_array,
                            nni_put_parm and
                            nni_put_parm_array.
               
The string representations of these Natural data types look like this:
| Format | String representation | 
|---|---|
| P, N | For example, -3.141592, where the decimal
                                             character defined in theDCparameter is
                                             used. | 
| D | Date format as defined in the DTFORMparameter, (e. g. "2004-07-06", ifDTFORM=I). | 
| T | Date format as defined in the DTFORMparameter, combined with a Time value in the form
                                             hh:ii:ss:t (e. g.2004-07-06 11:30:42:7, ifDTFORM=I) or Time value in the form hh:ii:ss:t (e. g.11:30:42:7). | 
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| szString | String representation of the value. | 
| chFormat | Natural data type of the value. | 
| iLength | Natural length of the value. The total number of
                                             significant digits in the case of NNI_TYPE_NUMandNNI_TYPE_PACK, 0 otherwise. | 
| iPrecision | Number of decimal places in the case of NNI_TYPE_NUMandNNI_TYPE_PACK, 0 otherwise. | 
| iBufferLength | Length of the buffer provided in pBuffer. | 
| pBuffer | Buffer that contains the internal representation of the value on return. The buffer must be large enough to hold the internal Natural representation of the value. The required sizes are documented in Format and Length of User-Defined Variables. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| > 0 | Natural error number | 
int nni_to_string(void* pnni_func, int iBufferLength, const void* pBuffer, char chFormat, int iLength, int iPrecision, int iStringLength, char* szString);
Converts the internal representation of a Natural P, N, D or T
                            value, as it is used in the functions nni_get_parm,
                            nni_get_parm_array,
                            nni_put_parm and
                            nni_put_parm_array,
                            into a the string representation.
               
The string representations of these Natural data types look as
                            described with the function nni_from_string.
               
| Parameter | Meaning | 
|---|---|
| pnni_func | Pointer to an NNI interface instance. | 
| iBufferLength | Length of the buffer provided in pBuffer. | 
| pBuffer | Buffer that contains the internal representation of the value. The required sizes are documented in Format and Length of User-Defined Variables. | 
| chFormat | Natural data type of the value. | 
| iLength | Natural length of the value. The total number of
                                             significant digits in the case of NNI_TYPE_NUMandNNI_TYPE_PACK, 0 otherwise. | 
| iPrecision | Number of decimal places in the case of NNI_TYPE_NUMandNNI_TYPE_PACK, 0 otherwise. | 
| iStringLength | Length of the string buffer provided in szStringincluding the terminating zero. | 
| szString | String buffer that contains the string representation of the value on return. The string buffer must be large enough to hold the external representation including the terminating zero. | 
The meaning of the return codes is explained in the section Return Codes.
| Return Code | Remark | 
|---|---|
| NNI_RC_OK | |
| NNI_RC_NOT_INIT | |
| NNI_RC_PARM_ERROR | |
| > 0 | Natural error number |