Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Here are functions for handling other than JCL Procman objects.
Inserts a manual activity (i.e. a text displayed to Procman user). Optionally the activity name where the text is displayed can be specified.
Prototype
VOID INSMANACT (STR TEXT)
VOID INSMANACT (STR TEXT, STR ACT)
Returns
VOID
Parameters
TEXT
: A text of the manual activity
ACT
: The optional activity name
Inserts a manual activity (i.e. a text displayed to Procman user). Optionally the activity name where the text is displayed can be specified. Use this ver-sion if you want to insert more activities.
Prototype
VOID INSMANACT (LST TEXT)
VOID INSMANACT (LST TEXT, STR ACT)
Returns
VOID
Parameters
TEXT
: A list containing text of one or more activities. Each item in the list must be a string and contains just one activity.
ACT
: The optional activity name
Writes a note in DD HOSXOUT (WTEMPS section)
Prototype
VOID WRITEINDB (STR KEY, STR SEPAR, STR TARGET,
STR MEM, STR LIB, STR DATA);
VOID WRITEINDB (STR KEY, STR SEPAR, STR TARGET,
STR MEM, STR LIB, LIST LSTDATA);
Returns
VOID
Parameters
KEY
: Data type
SEPAR
: Data separator
TARGET
: Target ProcMan activity (optionally with a system ID)
MEM
: Member name
LIB
: Library name
DATA
: Data to be written – use this to insert a single line
LSTDATA
: List of lines to be written – use this if you want to insert multiple lines
The data created by this function become available in HOSXIN of the activity specified as 3rd parameter (TARGET). You can:
specify just an activity name, for example: JCL_NEW_APPROVE
or append also a system id to the activity name, for example: JCL_NEW_APPROVE.SYSH_ID1
When the system is present (it must be separated from the activity name with a dot) then the data will be available in HOSXIN of the selected activity only on the specified system. This allows you to specify different HOSXIN content for different target systems of the same activity.
Prints information about cached table records to SYSPRINT
.
Prototype
VOID CACHEINFO()
Returns
VOID
Inserts a message. When the message text contains variables, their values must be passed to the PARM
list.
Prototype
VOID INSMSG(STR CODE)
VOID INSMSG(STR CODE, LST PARM)
Returns
VOID
Parameters
CODE
: Message code
PARM
: List with message parameters that are of type STR
The function uses the messages that are defined under JCK-MSG
. Each message has a CODE
, a SEVERITY
and a MESSAGE
that can contain variables.
Inserts a message with an explicit severity. When the message text contains variables, their values must be passed to the PARM
list.
Prototype
VOID INSMSGEX(STR CODE, NUM SEVERITY)
VOID INSMSGEX(STR CODE, NUM SEVERITY, LST PARM)
Returns
VOID
Parameters
CODE
: Message code
SEVERITY
: Message severity
0
-> Info
4
-> Warning
8
-> Error
12
-> Fatal error
PARM
: List with message parameters that are of type STR
For this example, the same messages are being used as in INSMSG.
Prints a value to SYSPRINT
. Optionally, a prefix can be defined that is appended in front of the value.
Prototype
VOID SAY(STR VALUE)
VOID SAY(STR PREFIX, STR VALUE)
VOID SAY(BOOL VALUE)
VOID SAY(STR PREFIX, BOOL VALUE)
VOID SAY(LST VALUE)
VOID SAY(STR PREFIX, LST VALUE)
VOID SAY(VOID VALUE)
VOID SAY(STR PREFIX, VOID VALUE)
VOID SAY(OBJ VALUE)
VOID SAY(STR PREFIX, OBJ VALUE)
Returns
VOID
Parameters
VALUE
: Printed value
PREFIX
: Appended value in front
Using a prefix can be useful, if a variable is being used that changes depending on the context (e.g. a different system). This could also be achieved via concatenation.
These functions can be used to get and set values of forms.
This function allows to insert options that are visible in select field on FRM form.
Prototype
VOID ADDFORMOPTION (STR FRM, STR FLD, STR LBL, STR VAL)
Returns
VOID
Parameter
FRM
: A name of the form that contains FLD field.
FLD
: A name of the field whose options are modified.
LBL
: A label displayed in the option.
VAL
: A value of the item with LBL label.
This example inserts 3 options to the select box of DD_DSNW_LRECL field in FRM_JCK_DD_DSNW form. Labels displayed in the form are equal to values, which are used.
The function never removes options that already exist. It only appends new ones.
Returns a value of the requested attribute of the focused form field. Returns an empty string and issues a warning if no form field is focused.
Prototype
STR ATTR(STR NAME)
Returns
STR
Parameters
NAME
: A name of the attribute (for example, 'must', 'disabled', ...).
Returns a value of the requested attribute of FIELD field of the form assigned to the current JCL statement. Returns an empty string and prints a warning if the current statement has not assigned a form or the field does not exist.
Prototype
STR ATTR(STR NAME, STR FIELD)
Returns
STR
Parameters
NAME
: Name of the attribute (for example, 'must', 'disabled', ... )
FIELD
: Name of the field of the form assigned to the current statement
Returns a value of the requested attribute of IDX generation of FIELD multiple form field of the form assigned to the current JCL statement. Returns an empty string and prints a warning if the current statement has not assigned a form or the field does not exist.
Prototype
STR ATTR(STR NAME, STR FIELD, NUM IDX)
Returns
STR
Parameters
NAME
: Name of the attribute (for example, 'must', 'disabled', ...)
FIELD
: Name of the field of the form assigned to the current statement
IDX
: Index of the multiple field
If you have multiple form fields (i.e. expand='Y' is set in the XML definition) then you can get an attribute of a selected generation by specifying the index. Use 1 for the first one, 2 for second one, ... It is also possible to use the format with just 2 parameters if you set the field name in 'FIELD.IDX' format.
Deletes a form from the current JCL statement (if it exists). After calling this function the JCL statement has no more a form assigned.
Prototype
VOID DELFORM()
Returns
VOID
Returns a value of the requested form field. If the current statement has not assigned a form or if the field does not exist then it returns an empty string and prints a warning. If the field value is numeric then it returns NUM, other-wise it returns the value as STR.
Prototype
STR FIELD(STR NAME)
NUM FIELD(STR NAME)
Returns
STR or NUM
Parameters
NAME
: A name of the field
Returns a value of the requested form field of IDX generation. This version of the function is aimed for multiple fields (fields inside of forms with EX-PAND='Y' group's option in XML definition). If the current statement has not assigned a form or if the field does not exist then it returns an empty string and prints a warning. If the field value is numeric then it returns NUM, other-wise it returns the value as STR.
Prototype
STR FIELD(STR NAME, NUM IDX)
NUM FIELD(STR NAME, NUM IDX)
Returns
STR or NUM
Parameters
NAME : A name of the field
IDX : The field index. Use 1 for 1st field, 2 for 2nd one, ....
In spite of the fact the 2nd version of the function is intended for multiple fields and it is recommended in this case, you can also get values of multiple fields by the first version. You just need to specify the name in format: "FIELDNAME.IDX".
Returns true if the field (the current one if NAME is not specified, otherwise NAME) exists in jcl_old XML section but its value differs from the current one. In all other cases returns false.
Prototype
BOOL FIELDCHANGED ()
BOOL FIELDCHANGED (STR NAME)
Returns
BOOL
Parameters
NAME
: The field name that is tested. When not specified then the focused field is used. When no field is focused or when the field does not exist then it prints a warning and returns false.
Returns true if the field (the current one if NAME is not specified, otherwise NAME) doesn't exist in jcl_old XML section. This can be because in the past no form was assigned to the JCL statement or the form did not contain this field.
Prototype
BOOL FIELDISNEW ()
BOOL FIELDISNEW (STR NAME)
Returns
BOOL
Parameters
NAME - The field name that is tested. When not specified then the focused field is used. When no field is focused or when the field does not exist then it prints a warning and returns false.
The field name that is tested. When not specified then the focused field is used. When no field is focused or when the field does not exist then it prints a warning and returns false.
Prototype
LIST FIELDS()
Returns
LIST
This function returns an associative list, there keys equal to field names and values equal to field val-ues. In case of multiple fields the values are stored in a nested list, where its keys contain indexes and values contain field values. You can iterate values obtained by this function as shown in the example. Calling TYPE function is important here, as to access multiple fields in a nested list is possible only when the field value is stored as a list.
This example prints values of a form fields (it the JCL statement has a form assigned) to SYSPRINT.
In case of a multiple field its values are stored in a nested list, which is iterated when TYPE function returns 'LIST'. In case of a single field TYPE returns 'STR' and its value is stored simply as a string.
Returns a name of the form that is assigned to the current JCL statement. Returns an empty string if the statement has no form.
Prototype
STR FORM()
Returns
STR
Returns true if at least one field in the form has a different value than in jcl_old data of the form of the current JCL statement. Returns true also if there is no form in the old data and now it is or vice versa.
Prototype
BOOL FORMCHANGED ()
Returns
BOOL
Returns true if the current JCL statement has a form assigned but in the past it didn't. That means that there is no form assigned to the current statement in jcl_old XML section or that this section doesn't exist at all.
Prototype
BOOL FORMISNEW()
Returns
BOOL
Returns TRUE if the current JCL statement has a form assigned. Otherwise it returns FALSE.
Prototype
BOOL HASFORM()
Returns
BOO
L
Returns true if the old and new forms are different. The old value is read from HOS_FORM_ORIG HOSXIN parameter, while the current one from HOS_FORM_CURR.
Prototype
BOOL HOCHANGEFORM()
Returns
BOOL
Sets a new value of the selected attribute of the focused form field. If no form field is focused then it does nothing but issues a warning.
Prototype
VOID SETATTR (STR NAME, STR VAL)
Returns
VOID
Parameters
NAME
: Name of the attribute (for example, 'must', 'disabled', ...)
VAL
: New value of the attribute
Sets a new value of the selected attribute of the specified form field. If current statement has not assigned a form or if the field does not exist then it does nothing but issues a warning.
Prototype
VOID SETATTR (STR NAME, STR VAL, STR FIELD)
Returns
VOID
Parameters
NAME
: Name of the attribute (for example, 'must', 'disabled', ...)
VAL
: New value of the attribute
FIELD
: Field name of the form of the current statement
Sets a new value of the selected attribute of the specified multiple form field. If current statement has not assigned a form or if the field does not exist then it does nothing but issues a warning.
Prototype
VOID SETATTR (STR NAME, STR VAL, STR FIELD, NUM IDX)
Returns
VOID
Parameters
NAME
: Name of the attribute (for example, 'must', 'disabled', ...)
VAL
: New value of the attribute
FIELD
: Field name of the form of the current statement
IDX
: Field index of the multiple form field.
If you have multiple form fields (i.e. expand='Y' is set in the XML definition) then you can set an attribute of a selected generation by specifying the index. Use 1 for the first one, 2 for second one, ... It is also possible to use the format with just 3 parameters if you set the field name in 'FIELD.IDX' format.
You can use the following field attributes:
state, state of the form field, for example: OK (green field), modify (yellow field)
must, Y if the field is mandatory, N otherwise
expr, integer or regular expression
help, help text displayed in the form
range, range of valid integer values. For example [1-80] accepts any number from 1 to 80 in the field
disabled, Y if the form field should be disabled, N otherwise
label, overwrites the form field's label
If the attribute name equals 'expr' then the value must be one of the following:
valid regular expression
integer with a meaning of field length. PRX converts it to this regular expression: /^[^[:space:]]{xxx}$/ where xxx is your number.
Sets a new value of the specified form field. Prints a warning if the field or form doesn't exist.
Prototype
VOID SETFIELD (STR NAME, STR VALUE)
Returns
STR
Parameters
NAME
: A name of the field
VALUE
: String or numeric new value of the form field
When the value is surrounded by apostrophes then the apostrophes are automatically removed. If you dislike this feature then you can deactivate it by #SET_FIELD_REMOVE_APOS contant.
Sets a form to the current JCL statement. If the current JCL statement al-ready has a form assigned then it is replaced with the new one. If the new form name equals the old one then it does nothing.
Prototype
VOID SETFORM(STR NAME)
Returns
VOID
Parameters
NAME
: The new form name
Performs matching of form data of old JCL to the new JCL. Returns a number of successfully matched JCL statements.
Prototype
BOOL ALLIN (LIST SEARCH, LIST LST)
Returns
BOOL
Parameters
SEARCH
: The list with elements that are searched for
LST
: The list where the elements are searched.
Returns the current date/time in the requested format.
Prototype
STR NOW()
STR NOW(STR FORMAT)
Returns
STR
Parameters
FORMAT
: Specified format that consists of various keywords (default: YYYY-MM-DD HH:II:SS
)
YYYY
Year in 4-digit format
YY
Year in 2-digit format
ZY
Year in 2-digit format (without zeros)
MMM
Month in 3-letter format (uppercase)
Mmm
Month in 3-letter format (title case)
MM
Month in 2-digit format
ZM
Month in 2-digit format (without zeros)
DDD
Number of days into the year
DD
Day in 2-digit format
ZD
Day in 2-digit format (without zeros)
HH
Hour in 2-digit format
II
Minutes in 2-digit format
SS
Seconds in 2-digit format
999
Milliseconds in 3-digit format
999999
Microseconds in 6-digit format
Pauses the program for the specified time in milliseconds.
Prototype
VOID SLEEP(NUM MILLIS)
Returns
VOID
Parameters
MILLIS
: Number of milliseconds (1000 = 1 second)
Returns the date and time of the most recent update. The initial update occurs when the program starts. Subsequent updates are performed using the UPDATETIME-function. This function is useful when consistent date and time values are needed across different parts of the program.
Prototype
STR TIME()
STR TIME(STR FORMAT)
Returns
STR
Parameters
FORMAT
: Specified format that consists of various keywords (default: YYYY-MM-DD HH:II:SS
)
Updates the stored date and time to the current date and time. After performing the update the TIME-function will return the new values.
Prototype
VOID UPDATETIME()
Returns
VOID
ALLIN
Returns TRUE if all elements from SEARCH exist also in LST. Items in LST list can contain wildcards.
Prototype
BOOL ALLIN (LIST SEARCH, LIST LST)
Returns
BOOL
Parameters
SEARCH
: The list with elements that are searched for.
LST
: The list where the elements are searched.
Returns TRUE if at least one element from SEARCH exists also in LST. Items in LST list can contain wildcards.
Prototype
BOOL ANYIN (LIST SEARCH, LIST LST)
Returns
BOOL
Parameters
SEARCH
: The list with elements that are searched for.
LST
: The list where the elements are searched.
Converts a string (VALUE) to a list by splitting it by the use of SEPAR sepa-rator. The separator is consumed by the function, which means the resulting list items do not contain it.
Prototype
LST EXPLODE (STR VALUE, STR SEPAR)
Returns
LST
Parameters
VALUE
: The string which is going to explode.
SEPAR
: The separator used for splitting VALUE.
Converts a list to string by joining list's element with SEPAR glue.
Prototype
STR IMPLODE (LIST LST, STR SEPAR)
Returns
STR
Parameters
LST
: The list that is converted to a string.
SEPAR
: The separator used for joining LST items.
Checks whether VAL value exists in LST list. This function always searches for values, never for keys. Items in the list can contain wildcards.
Prototype
BOOL IN (STR VAL, LIST LST)
BOOL IN(NUM VAL, LIST LST
)
BOOL IN(BOOL VAL, LIST LST)
Returns
BOOL
Parameters
VAL
: Number, string or bool value that is searched for in the list.
LST
: The list where the value is searched for.
Checks whether KEY key exists in LST list. If keys are used in the list then it compares keys. If the list uses automatic (i.e. numeric) keys then the key must be numeric. Items in the list can contain wildcards.
Prototype
BOOL KEYIN (STR KEY, LIST LST)
BOOL KEYIN (NUM KEY, LIST LST)
BOOL KEYIN (BOOL KEY, LIST LST)
Returns
BOOL
Parameters
KEY
: The key to search.
LST
: The list where the key is searched for.
Returns a list of keys used in the list passed as a parameter. This is useful mainly when the parameter is an associative list. By calling this function the keys can be transformed to a standard list. If the list passed as a parameter is not associative then the function returns a list of numbers, because num-bers are used as keys in non associative lists.
Prototype
LIST KEYS (LIST LST)
Returns
LIST
Parameters
LST
- The list from which keys are extracted.
Returns an associative list sorted by keys. This function fails when used with simple (non associative) list.
Prototype
LIST KSORT (LIST LST)
LIST KSORT (LIST LST, BOOL ASC)
Returns
LIST
Parameters
LST
: The original list.
ASC
: The sorting order. Use TRUE (default) for ascending sorting, FALSE for descending.
Returns a list that contains all elements of all lists passed as arguments. The function can be used both with standard lists (with automatic keys) or with associative lists. You can merge up to 5 lists by one function call. All lists that are merged must have the same type - they all must use automatic keys or be associative. A content of the lists passed as arguments is not affected by the function.
Prototype
LIST MERGE (LIST L1, LIST L2)
LIST MERGE (LIST L1, LIST L2, LIST L3)
LIST MERGE (LIST L1, LIST L2, LIST L3, LIST L4)
LIST MERGE (LIST L1, LIST L2, LIST L3, LIST L4, LIST L5)
Returns
LIST
Parameters
L1-L5
: The source lists.
When the lists use automatic indexes then the result contains all elements of the source lists. The first element has index 1, the last one has index equal to their count. In case of associative lists the key val-ues are important. If there are elements in the merged lists having the same key values, then such an element appears just once in the result and its value equals to the last one used
Example 1:
The value of X is: ['a','b','c','d','e','f','g','h','i']
Example 2:
The value of X is: ['a' => 'five', 'b' => 'two', 'c' => 'four']
Inserts a new value to the list. This function can be used only with lists hav-ing automatic indexes.
Prototype
VOID PUT(BOOL VAL, LIST LST)
VOID PUT(NUM VAL, LIST LST)
VOID PUT(STR VAL, LIST LST)
VOID PUT(LIST VAL, LIST LST)
Returns
VOID
Parameters
VAL
: The value that is inserted.
LST
: The list where the value is inserted.
Inserts a new pair or key and value to the list. This function can be used only with lists that use keys. If the key already exists in the list then it is set the new value.
Prototype
VOID PUT (BOOL KEY, BOOL VAL, LIST LST)
VOID PUT (BOOL KEY, NUM VAL, LIST LST)
VOID PUT (BOOL KEY, STR VAL, LIST LST)
VOID PUT (BOOL KEY, LIST VAL, LIST LST)
VOID PUT (NUM KEY, BOOL VAL, LIST LST)
VOID PUT (NUM KEY, NUM VAL, LIST LST)
VOID PUT (NUM KEY, STR VAL, LIST LST)
VOID PUT (NUM KEY, LIST VAL, LIST LST)
VOID PUT (STR KEY, BOOL VAL, LIST LST)
VOID PUT (STR KEY, NUM VAL, LIST LST)
VOID PUT (STR KEY, STR VAL, LIST LST)
VOID PUT (STR KEY, LIST VAL, LIST LST)
Returns
VOID
Parameters
KEY
: The key that is inserted.
VAL
: The value that is inserted.
LST
: The list where the key and value are inserted.
Inserts all items from the source list to the target one. The new items are appended at the end. This function can be used only with target lists having automatic indexes. Items in the source list can be of any type.
Prototype
VOID PUTALL (LIST SRC, LIST TRG)
Returns
VOID
Parameters
SRC
: The source list.
TRG
: The target list.
Example:
After calling putall the content of &A will be: [1,2,3,4,5,'x','y','z']
Inserts all items from the source list to the target one at the specified posi-tion. If the position if higher than the current number of elements of the target list then the new items are appended to its end. This function can be used only with target lists having automatic indexes. Items in the source list can be of any type.
Prototype
VOID PUTALLAT (LIST SRC, NUM POS, LIST TRG)
Returns
VOID
Parameters
SRC
: The source list.
TRG
: The target list.
NUM
: The position where items are inserted.
Example:
After calling putall the content of &A will be: [1,2,'x','y','z',3,4,5]
Inserts a new value to the list at POS position. Existing items at POS and higher positions are shifted.
Prototype
VOID PUTAT (BOOL VAL, NUM POS, LIST LST)
VOID PUTAT (NUM VAL, NUM POS, LIST LST)
VOID PUTAT (STR VAL, NUM POS, LIST LST)
VOID PUTAT (LIST VAL, NUM POS, LIST LST)
Returns
VOID
Parameters
VAL
: The value that is inserted.
POS
: The position where the new value is inserted.
LST
: The list where the new value is inserted.
Removes VAL value from the list. It always compare values, even when the list uses keys.
Prototype
VOID REM(BOOL VAL, LIST LST)
VOID REM(NUM VAL, LIST LST)
VOID REM(STR VAL, LIST LST)
Returns
VOID
Parameters
VAL
: The value that is removed.
LST
: The list from which the value is removed.
Removes a value from the list at specified position. If the list does not use keys then VAL must be a number and has a meaning of a position. Other-wise VAL has a meaning of key.
Prototype
VOID REMAT (BOOL VAL, LIST LST)
VOID REMAT (NUM VAL, LIST LST)
VOID REMAT (STR VAL, LIST LST)
Returns
VOID
Parameters
VAL
: The index or key that is removed.
LST
: The list from which the value is removed.
Returns a list that has items sorted in the reverse order. It can be used with normal as well as with associative lists.
Prototype
LIST REVERSE (LIST LST)
Returns
LIST
Parameters
LST
: The original list.
Returns TRUE if all pairs of a key and a value from L1 appear also in L2 and there is no key-value pair which exists only in one of the two lists.
Prototype
BOOL SAME (LIST L1, LIST L2)
Returns
BOOL
Parameters
L1
: One of the lists that are compared.
L2
: Another one of the lists that are compared.
Returns TRUE if all keys from L1 appear also in L2 and there is no key which exists only in one of the two lists.
Prototype
BOOL SAMEKEYS (LIST L1, LIST L2)
Returns
BOOL
Parameters
L1
: One of the lists that are compared.
L2
: Another one of the lists that are compared.
Returns TRUE if all values from L1 appear also in L2 and there is no value which exists only in one of the two lists.
Prototype
BOOL SAMEVALUES
(LIST L1, LIST L2)
Returns
BOOL
Parameters
L1
: One of the lists that are compared.
L2
: Another one of the lists that are compared.
Returns a number of elements in LST list.
Prototype
NUM SIZE (LIST LST)
Returns
BOOL
Parameters
LST
: The list whose size is returned.
Returns a list with sorted original list items. If it is used with associative lists then the result is sorted by values. If you need to sort by keys, use KSORT function instead.
Prototype
LIST SORT (LIST LST)
LIST SORT (LIST LST, BOOL ASC)
Returns
LIST
Parameters
LST
: The original list
ASC
: The sorting order. Use TRUE (default) for ascending sorting, FALSE for descending.
Returns a sublist of LST list. The new list contains elements starting at POS position of the original list. POS can be negative, then it measures from the end.
Prototype
LIST SUBLIST (LIST LST, NUM POS)
Returns
LIST
Parameters
LST
: The original list
POS
: The index from which the sublist starts
Returns a sublist of LST list. The new list contain max LEN elements of the original list starting from POS position. POS can be negative, then it measures from the end.
Prototype
LIST SUBLIST (LIST LST, NUM POS, NUM LEN)
Returns
LIST
Parameters
LST
: The original list .
POS
: The index from which the sublist starts .
LEN
: The number of elements the returned list contains .
SUBLIST function works only with lists with automatic numeric keys. It can't be used for lists with user-defined keys.
Returns a list of values used in the list passed as a parameter. The returned list is not associative. That means indexes in the returned list are numbers.
Prototype
LIST VALUES (LIST LST)
Returns
LIST
Parameters
LST
: The list from which values are extracted
Deletes a variable with the specified NAME
and frees up its memory.
Assigns a VALUE
to a variable of the specified NAME
and creates that variable, if it didn't exist beforehand.
A huge advantage of using this function compared to SET
and UNSET
is, that variable names can stem from other variables. But this should be used cautiously since this can lead to confusion within the PRX code.
For information why this can have advantages to UNSET
, read details in .
Prototype
VOID DELVAR(STR NAME)
Returns
VOID
Parameters
NAME
: The variable name (without &
or &VAR:
prefix)
Prototype
VOID SETVAR(STR NAME, STR VALUE)
VOID SETVAR(STR NAME, NUM VALUE)
VOID SETVAR(STR NAME, BOOL VALUE)
VOID SETVAR(STR NAME, LST VALUE)
VOID SETVAR(STR NAME, OBJ VALUE)
Returns
VOID
Parameters
NAME
: The variable name (without &
or &VAR:
prefix)
VALUE
: The value that's assigned to the variable
Returns a name of the current process action.
Prototype
STR HOACTION ()
Returns
STR
Returns a name of the user logged into Procman.
Prototype
STR HOLOGONUSER()
Returns
STR
Returns a name of the current process.
Prototype
STR HONAME()
Returns
STR
Returns TRUE if the preview mode is on. The information is read from hos_preview HOSXIN option.
Prototype
BOOL HOPREVIEW()
Returns
BOOL
Returns a type of the process. It uses is_change HOSXIN option. If it is set then it returns CHANGE, else it returns NEW.
Prototype
STR HOTYPE()
Returns
STR
Returns a value of an option from section in HOSXIN file.
Prototype
STR OPT (STR NAME)
Returns
STR
Parameters
NAME
: name of the option whose value is returned
Returns a value of XML attribute at the specified path.
Prototype
STR READXML (STR PATH, STR DEF, STR ATTR)
Returns
STR
Parameters
PATH
: A path to the section which is read
DEF
: The default value returned when the section or attribute is not found
ATTR
: The attribute whose value is returned
Returns a value of XML attribute at the specified path. It returns a value of 'value' attribute.
Prototype
STR READXML (STR PATH, STR DEF)
Returns
STR
Parameters
PATH
: A path to the section which is read
DEF
: The default value returned when the section or attribute is not found
Returns a value of XML attribute at the specified path. It returns a value of 'value' attribute. The default value returned when the section or attribute is not found is an empty string.
Prototype
STR READXML (STR PATH)
Returns
STR
Parameters
PATH
: A path to the section which is read
The path is a string containing space-separated tokens. Each token has a meaning of one XML section.
Each token can be followed with modifiers that specify further search criteria. These modifiers are:
(AttrName='AttrValue') : AttrName is an attribute name and AttrValue is its value.
(Position): a position of the section (matching AttrName='AttrValue' criteria if present) in its parent section.
Both modifiers are optional.
If more filters (AttrName='AttrValue') are required then they must be comma separated (AttrName1='AttrValue1',AttrName2='AttrValue2',...)
Example 1:
This example returns a value of 'value' attribute (as 'value' attribute is used by default when not explicitly defined) of <parm> XML section with 'name' attribute equal to 'cond'.
The value is read from <parm> section which is a child section of <parms>, which is a child of <exec>, ....
Example 2:
This example returns a value of 'value' attribute of <parm> XML section with name='DISP'.
This <parm> XML section must be a child of the first <parms> section of the first<dd> section in 2nd <exec> child section of <hos><jcl_old><job> that has pgm attribute equal to 'IKJEFT01'.
In case nothing matches the path then 'SHR' is returned.
The following syntax diagram should be clear enough for understanding the syntax:
See also the syntax o String.
Returns the sysplex where the job runs.
Prototype
STR SYSPLEX()
Returns
STR
Returns the system where the job runs.
Prototype
STR SYSTEM()
Returns
STR
Returns a name of the user, which has submitted the job.
Prototype
STR USER ()
Returns
STR
Functions that can be used to control objects created by SmartJCL.
Functions that can be used to control objects created by SmartJCL.
Prototype
VOID ADDINSTREAM(STR LINE)
VOID ADDINSTREAM(LST LINES)
VOID ADDINSTREAM(STR LINE, OBJ STMTPTR)
VOID ADDINSTREAM(LST LINES, OBJ STMTPTR)
Returns
VOID
Parameters
LINE
: A line that is appended to the list of existing instream lines.
LINES
: A list of strings, whose content is appended to the list of existing instream lines.
STMTPTR
: JCL-statement object pointer. When it is not specified then the actual one is used.
Adds an instream line(s) to current JCL statement at specified position
Prototype
VOID ADDINSTREAM(NUM POS, STR LINE)
VOID ADDINSTREAM(NUM POS, LST LINES)
VOID ADDINSTREAM(NUM POS, STR LINE, OBJ STMTPTR)
VOID ADDINSTREAM(NUM POS, LST LINES, OBJ STMTPTR)
Returns
VOID
Parameters
POS
: A position where the instream lines are inserted. The line is inserted before this position. For example, to insert at the beginning, use POS=1. To insert at the end use some very high number, for example 999999 or better do not specify the position at all. The value can be also negative. Then lines are counted in the reverse order (-1 means before the last line, ...
LINE
: A line that is inserted to the list of existing instream lines
LINES
: List of strings, whose content is inserted to the list of existing instream lines.
STMTPTR
: JCL-statement object pointer. When it is not specified then the actual one is used.
Returns a DD name where the output is created by JCL reformat. Available values are JUPJCLO, SRIJCLO, SRISYSO
Prototype
STR ARCHIVEDD()
Returns
STR
Returns the target system, where the currently processed member is copied by Procman and which is written to Procman's archive. The function returns a valid value only if it has been previously set by SETARCHIVESYSTEM func-tion. Otherwise it returns an empty string.
Prototype
STR ARCHIVESYSTEM ()
Returns
STR
Returns a type of the data stored in the actual member. Available types are JCL, PROC, SYSIN
Prototype
STR ARCHIVETYPE ()
Returns
STR
Returns a list with information about the context in which the actual JCL statement is located (job name, step name, dd name, program, level, ...).
Prototype
LIST CONTEXT ()
Returns
LIST
Example:
This function if useful for debugging, but values in the list that is returned can also be used for example in filters or IF expressions. The sample above can for example print the following output:
This function allows you to create additional files in PRX script. Files created this way are written to SRIJCLO (jobs and procedures) and to SRISYSO (sysin members). Every created member is also recorded in HOSXOUT member, which instruct PHP program how to read and store members from SRIJCLO and SRISYSO. There are several variants of CREATEMEMBER function, depending on the mode of operation.
Moves or copies one or more steps from the current JCL member to an external member. As a result new members are stored to Procman archive. The moved/copied steps are reformatted, they are constructed from their parameter lists and not from original lines.
It can also be used for copying or moving of instream lines of the current DD statement when TYPE equals 'SYSIN'. In this case PRX requires that the current JCL statement is DD.
Prototype
VOID CREATEMEMBER(STR LIB, STR MEM, STR SYS,STR TYPE, STR MODE)
VOID CREATEMEMBER(STR LIB, STR MEM, STR SYS,STR TYPE, STR MODE, NUM START)
VOID CREATEMEMBER(STR LIB, STR MEM, STR SYS,STR TYPE, STR MODE, NUM START, NUM END)
Returns
VOID
Parameters
LIB
: Library where the member should be created
MEM
: Name of the created member
SYS
: System id where the member is created. It must either be empty (when the same system as in the current member should be used) or it must be one of system ids configured in Procman.
TYPE
: Type of data stored in the new member. It must be 'JCL' to create a job and 'PROC' to create a procedure. You can also use 'SYSIN' but in this case START and END are not positions of steps but positions of instream lines and also the current statement must be DD.
MODE
: Use 'COPY' if JCL statements or instream lines should be copied from the current member to the new one.
Use 'MOVE' if JCL statements or instream lines should be moved. In this case they disappear from the current member (i.e. from member saved to JUPJCLO) and will be only in the newly created one.
START
: (Optional)
If mode equals 'JCL' or 'PROC' the it is a position of the step from which copy/move starts. To start from 1st step use 1, from 2nd step use 2, ... You can use zero if you want to start from the very first statement of the member (JOB).
In case of SYSIN mode it is a number of the 1st instream line of the current DD statement.
When this parameter is missing then copying starts from the very first JCL statement (for type 'JCL' or 'PROC') or from the very first instream line (SYSIN).
END
: (Optional)
The last moved/copied step or instream line. To move/copy steps 2, 3 and 4 use START=2,END=4. When this parameter is not specified then all steps (or instream lines) of the current member (or DD) starting from START are moved or copied.
Example 1:
The first call copies the first and all further steps from the current member to ABCD member in P390A.TEST dataset on SYSH_ID system. The newly created member has JCL type and is therefore stored in JCL Procman archive.
The second call moves first, second and third steps from the current member to ABCD member in P390A.TEST dataset on the same system where the current member is. The newly created member has PROC type and is therefore stored in PROC Procman archive. This kind of copying/moving is useful for splitting the original JCL to procedures. Procedures are created in external members and steps in the original job are changed so that they call them. In this case further PRX commands are needed for creating EXEC statements that call the created procedures. This is not done automatically.
The third call moves all instream lines of the current DD statement to SRISYSO DD and instructs PRX to save the data as ABCD member in P390A.TEST library.
Moves or copies selected JCL statements from the current JCL member to an external member. As a result new members are stored to Procman ar-chive. The moved/copied statements are reformatted, they are constructed from their parameter lists and not from original lines.
Prototype
VOID CREATEMEMBER(STR LIB, STR MEM, STR SYS,STR TYPE, STR MODE, LIST STMT)
Returns
VOID
Parameters
LIB
: Library where the member should be create
MEM
: Name of the created member
SYS
: System id where the member is created. It must either be empty (when the same system as in the current member should be used) or it must be one of system ids configured in Procman.
TYPE
: Type of data stored in the new member. It must be 'JCL' to create a job and 'PROC' to create a procedure. You can also use 'SYSIN' but in this case STMT list must contain only string items.
MODE
: Use 'COPY' if JCL statements should be copied from the current member to the new one. Use 'MOVE' if JCL statements should be moved. In this case they disappear from the current member (i.e. from member saved to JUPJCLO) and will be only in the newly created one. MODE parameter is ignored for string items stored in STMT list.
STMT
: List of statements that are exported to the new member. The statements are removed from the original member if MODE equals 'MOVE', otherwise the statements remains in the original JCL unchanged. The list can also contain string items, which are exported as they are. This allows you to add new statements to the new member easily (for example, you can use it for adding PROC statement when you convert a step from the original member to a procedure).
Example 2:
This example shows how to create additional member similar to the main one. The sample converts the source member to a format required by PROD stage and creates similar member for TEST stage. The members differ only in a jobname and a comment line in this simple example
Creates a member from a content stored in a list or in a string. If list is used then it can contain either strings or JCL statement objects. If it contains strings then they are written to the output file exactly like they are specified. If you pass JCL statements in the list then the result is reformatted. JCL statements are objects created for example by JCLSTMT or STEPSTMT functions.
Prototype
VOID CREATEMEMBER(STR LIB, STR MEM, STR SYS,STR TYPE, STR MODE, LIST LISTDATA)
VOID CREATEMEMBER(STR LIB, STR MEM, STR SYS,STR TYPE, STR MODE, LIST LISTDATA, NUM LRECL)
VOID CREATEMEMBER(STR LIB, STR MEM, STR SYS,STR TYPE, STR MODE, STR STRDATA)
VOID CREATEMEMBER(STR LIB, STR MEM, STR SYS,STR TYPE, STR MODE, STR STRDATA, STR SEP)
VOID CREATEMEMBER(STR LIB, STR MEM, STR SYS, STR TYPE, STR MODE, STR STRDATA, STR SEP, NUM LRECL)
Returns
VOID
Parameters
LIB
: Library where the member should be created
MEM
: Name of the created member
SYS
: System id where the member is created. It must either be empty (when the same system as in the current member should be used) or it must be one of system ids configured in Procman.
TYPE
: Type of data stored in the new member. It must be 'JCL' to create a job and 'PROC' to create a procedure
MODE
: Must equals 'DATA'
LISTDATA
: List of strings or JCL statement objects. Lines stored in this list will become the content of the created member. Objects stored in the list are reformatted before they are written to the output file.
STRDATA
: String that contains the data. This string is split to lines by using SEP separator. The separator is removed from the data after splitting.
SEP
: Separator used for splitting the string to individual lines. If it is not specified then \n is used by default.
LRECL
: LRECL when it is different from 80. If not used then 80 is the default value. It has sense only for SYSIN data. SRISYSO DD must be allocated with the same LRECL.
Example 3:
When the current statement is DD and when some instream lines exist then these instream lines are stored into ABCD member in P391D.TEST dataset on SYSH_ID system. The data are stored to SYSIN procman archive. After the member is created the instream lines are removed from the original JCL (by assigning empty list).
Returns the current DD name or an empty string is the current JCL state-ment is not DD.
Prototype
STR DD ()
Returns
STR
This function returns only DD names of statements at levels 0. It returns an empty string if it is called when a statement of a called procedure or a statement of included member is currently selected (this is possible only when procedures are resolved by SmartJCL, when PR=Y option is set).
Returns a list filled with DD names of the current step. The list is empty is there are no DD names in the step or if the current statement is not a part of a step.
Prototype
LST DDLIST()
Returns
LST
This function returns only DD names at levels 0. It returns an empty list if it is called when a statement of called procedure or a statement of included member is currently selected (this is possible only when procedures are resolved by SmartJCL, when PR=Y option is set).
Deletes the whole DD (including all concatenations) if the current statement is DD. If the current statement is not DD then it issues a warning.
Prototype
VOID DELDD()
Returns
VOID
Deletes a DD with the specified name, including all concatenations. It does nothing if such a DD is not found.
Prototype
VOID DELDD (STR NAME)
Returns
VOID
Parameters
NAME
: A name of the DD that is deleted
Removes instream line at POS position from the list of existing instream lines. If POS is higher than the current number of lines then it does nothing. Pos can be negative: -1 is the last line, -2 is 2nd from the end, ...
Prototype
VOID DELINSTREAM (NUM POS)
Returns
VOID
Parameters
POS
: A position of the line that is removed.
Removes CNT instream lines starting at POS position. If POS in higher than the current number of lines then it does nothing. If POS + CNT - 1 is higher than the current number of lines then it removes all lines starting from POS. Pos can be negative.
Prototype
VOID DELINSTREAM(NUM POS, NUM CNT)
Returns
VOID
Parameters
POS
: A position of the line that is removed
CNT
: The number of lines to be removed.
Removes original line at POS position from the list of existing original lines. If POS is higher than the current number of lines then it does nothing. Pos can be negative: -1 is the last line, -2 is 2nd from the end, ... It also activates the reformatting.
Prototype
VOID DELORIGLINE(NUM POS)
Returns
VOID
Parameters
POS
: A position of the line that is removed.
Removes CNT original lines starting at POS position. If POS is higher than the current number of original lines then it does nothing. If POS + CNT - 1 is higher than the current number of lines then it removes all lines starting from POS. Pos can be negative. It also activates manual reformatting.
Prototype
VOID DELORIGLINE(NUM POS, NUM CNT)
Returns
VOID
Parameters
POS
: A position of the line that is removed.
CNT
: The number of lines to be removed.
Example 1:
This example removes the last 3 original lines of the current JCL statement.
Deletes the current (focused) parameter. If no parameter is focused then it does nothing but issues a warning.
Prototype
VOID DELPARM()
Returns
VOID
Deletes the specified parameter of the focused statement. If the parameter does not exist then it does nothing. If no statement is focused then it prints a warning. You can use wildcards in the name.
Prototype
VOID DELPARM (STR NAME)
Returns
VOID
Parameters
NAME
: A name of the parameter that is delete
Deletes the whole step that contains the current statement. If the statement is not inside of a step then it does nothing but prints a warning.
Prototype
VOID DELSTEP()
Returns
VOID
Deletes the whole step with specified name. If such a step does not exist then it does nothing.
Prototype
VOID DELSTEP(STR NAME)
Returns
VOID
Parameters
NAME
: A name of the step that is deleted
Deletes the current statement.
Prototype
VOID DELSTMT()
Returns
VOID
Deletes a statement with the specified name. It does nothing when such a statement is not found.
Prototype
VOID DELSTMT(STR NAME)
Returns
VOID
Parameters
NAME
: A name of the statement that is deleted.
Deletes the specified sub parameter of the current JCL statement. Both sub parameter and parameter can be numeric or strings. Numeric values can be used for positional sub parameters and parameters. String values for key-word ones.
Prototype
VOID DELSUBPARM(STR PNAME, STR SNAME)
VOID DELSUBPARM(NUM PPOS, NUM SPOS)
VOID DELSUBPARM(STR PNAME, NUM SPOS)
VOID DELSUBPARM(NUM PPOS, STR SNAME)
Returns
VOID
Parameters
SNAME
: Name of a sub parameter
PNAME
: Name of a parameter
SPOS
: Position of positional sub parameter
PPOS
: Position of positional parameterer
Enters a block of overriden statements. Returns TRUE if the currently pro-cessed JCL statement has some overriden statements and in this case it enters the overriden block. Otherwise does not enter it and returns FALSE.
Prototype
BOOL ENTEROVR()
Returns
BOOL
Returns the requested parameter of EXEC statement. It returns a parameter of the EXEC that contains the current statement or of the current statement if it is EXEC. If the current statement is not a part of an EXEC then it returns an empty string.
Prototype
STR EXECPARM (STR PARM)
Returns
STR
Parameters
PARM
: A name of the requested parameter.
Returns TRUE if the current JCL statement contains at least one instream line. Returns FALSE otherwise.
Prototype
BOOL HASINSTREAM()
Returns
BOOL
Returns TRUE if the current JCL statement contains original lines. FALSE can be returned for inserted statements, where original lines can be missing.
Prototype
BOOL HASORIGLINE()
Returns
BOOL
Returns TRUE is the current JCL statement contains overriden statements when SmartJCL's option PR=Y is set.
Prototype
BOOL HASOVR ()
Returns
BOOL
To learn more about overriden statements see Working with overriden JCL statement FAQ.
Iterates over all instream lines of the current statement and for every line checks whether it matches the mask. If yes, then such a line is replaced with REPL. The mask can contain wildcards. In this case also REPL must contain the same number and types of wildcard like MASK. It returns the number of changes.
Prototype
NUM CHANGEINSTREAM(STR MASK, STR REPL)
Returns
NUM
Parameters
MASK
: The mask that must be successfully matched against the instream line in
REPL
: The replacement value.
Example 1:
This example tries to match all instream lines of the current statement with P391D mask. If the match is successful, then the line is changed by P390A mask.
Iterates over all original lines of the current statement and for every line checks whether it matches the mask. If yes, then such a line is replaced with REPL. The mask can contain wildcards. In this case also REPL must contain the same number and types of wildcard like MASK. It returns the number of changes. This function also activates manual reformat for the statement where the change was made.
Prototype
NUM CHANGEORIGLINE(STR MASK, STR REPL)
Returns
NUM
Parameters
MASK
: The mask that must be successfully matched against the original line in order to perform the change.
REPL
: The replacement value.
Example 1:
Example 2:
Both samples to the same. The first one contains 4 CALL statements, the second one just one with a filter and 4 EXEC sections.
Returns the include level of the current JCL statement. This level is greater than zero for included statements. It can be used for example for scanning statements from includes when these statements are taken into account (when #SCAN_INCLUDE equals TRUE).
Prototype
NUM INCLUDELEVEL()
Returns
NUM
Example (iteration over statements):
In this example a list of JCL statements is obtained by JCLSTMT function. Because #SCAN_INCLUDE is TRUE then also statements of included members are iterated. Otherwise they would be skipped. The sample demonstrates how you can check the level of included statements and do some actions depend-ing on its value. You can add any commands and function calls into IF/ELSE blocks.
Inserts NAME JCL parameter with VALUE value to the current statement. It does nothing if the parameter already exists.
Prototype
VOID INSPARM(STR NAME, STR VALUE)
Returns
VOID
Inserts a new JCL step from JCL lines. The JCL lines must be formatted in the way in which they should appear in resulting JCL, because statements inserted this way are manually reformatted - they use the JCL lines only. The lines can contain variables, which are substituted. SEPAR is used for splitting values of these variables to lines if they contain more lines
Prototype
VOID INSSTEP(STR POS, LST LINES)
Returns
VOID
Parameters
POS
: A position where the new step is inserted.
LINES
: A list of JCL lines - the list must contain strings.
Inserts a new statement with a specified list of parameters.
Prototype
OBJ INSSTMT(STR POS, STR MODE, STR TYP, STR NAME, LST PARM)
Returns
OBJ
(contains the pointer of the new statement)
Parameters
POS
: The position where the new statement should be inserted
MODE
: Must be PARM
TYP
: The type of the JCL statement
NAME
: The name of the JCL statement
PARM
: A two dimensional list of JCL parameters and their values
There is also an outdated way of inserting a statement where the PARM
-list is a string instead of a two dimensional list.
Always strive to use an approach with a two-dimensional list and convert the older INSSTMT
-calls that use a string to the new method.
Inserts a new statement with the specified JCL lines.
Prototype
OBJ INSSTMT(STR POS, STR MODE, STR TYP, LST LINES)
Returns
OBJ
(contains the pointer of the new statement)
Parameters
POS
: The position where the new statement should be inserted
MODE
: Must be DATA
TYP
: The type of the JCL statement
LINES
: A list of JCL lines
When using this method of inserting plain JCL lines, the format of the resulting JCL will look exactly like the inserted line. SmartJCL will not reformat this.
Alternatively, the JCL lines can be loaded from an external file.
Prototype
OBJ INSSTMT(STR POS, STR MODE, STR TYP, STR FILE, STR SEPAR)
OBJ INSSTMT(STR POS, STR MODE, STR TYP, STR FILE)
Returns
OBJ
(contains the pointer of the new statement)
Parameters
POS
: The position where the new statement should be inserted
MODE
: Must be FILE
TYP
: The type of the JCL statement
FILE
: The full dataset name (e.g. SYSH.TEST(TESTMEM)
)
SEPAR
: The separator that is used to split the content of variables in the dataset to multiple lines (default: \n
)
When using variables in the dataset, the name of the variable has to be prefixed with VAR:
(e.g. VAR:TEST_VAR1
). This prevents the resolution of actual JCL variables.
Generally, this function is called from the pointer of the statement it originates from. Alternatively, a statement pointer can be passed to the function call to override this behaviour. This pointer can come from e.g. the JCLSTMT
- or NEXTJCLSTMT
-function. Use BEFORE
or AFTER
as a positional parameter.
Where a new statement is being inserted, depends on the positional value.
FIRST
At the beginning of the member
J
LAST
At the end of the member
K
BEFORE
Before the current statement
L
AFTER
After the current statement
M
BEFOREDD <STEP>,<DD>
,
BEFOREDD <DD>
Before the DD
-statement
AFTERDD <STEP>,<DD>
,
AFTERDD <DD>
After the DD
-statement
FIRSTDD <STEP>
Before the first DD
-statement
F
LASTDD <STEP>
After the last DD
-statement
G
BEFOREOUTPUT <STEP>,<OUT>
,
BEFOREOUTPUT <OUT>
Before the OUTPUT
-statement
AFTEROUTPUT <STEP>,<OUT>
,
AFTEROUTPUT <OUT>
After the OUTPUT
-statement
FIRSTOUTPUT <STEP>
Before the first OUTPUT
-statement
H
LASTOUTPUT <STEP>
After the last OUTPUT
-statement
I
BEFORESTEP <STEP>
Before the step
C
AFTERSTEP <STEP>
After the step
D
FIRSTSTEP
Before the first step
E
BEFOREEXEC <EXEC>
Before the EXEC
-statement
4
AFTEREXEC <EXEC>
After the EXEC
-statement
5
BEFOREFIRSTEXEC
Before the first EXEC
-statement
3
BEFOREFIRSTJOBLIB
Before the first JOBLIB
-statement
6
AFTERLASTJOBLIB
After the last JOBLIB
-statement
7
BEFOREJCLLIB
Before the JCLLIB
-statement
8
AFTERJCLLIB
After the JCLLIB
-statement
9
BEFOREJOB
Before the JOB
-statement
1
AFTERJOB
After the JOB
-statement
2
BEFOREJES <JES>
Before the JES
-statement
A
AFTERJES <JES>
After the JES
-statement
B
OLD
At the last deleted statement
0
DEFAULT
Inserts a positional or keyword sub parameter of a positional of keyword parameter to the current JCL statement. Use a number (SPOS) if you want to insert a positional sub parameter. Use string value (SNAME) for a keyword sub parameter. Also the parameter can be referenced by its position (positional parameter) or name (keyword parameter). If the JCL parameter does not exist then it is created. If the sub parameter already exists then this function does nothing.
Prototype
VOID INSSUBPARM(STR PNAME, STR SNAME, STR SVALUE)
VOID INSSUBPARM(STR PNAME, NUM SPOS, STR SVALUE)
VOID INSSUBPARM(NUM PPOS, STR SNAME, STR SVALUE)
VOID INSSUBPARM(NUM PPOS, NUM SPOS, STR SVALUE)
Returns
VOID
Parameters
SNAME
: Name of the sub parameter
SPOS
: Position of positional sub parameter
PNAME
: Name of the parameter
PPOS
: Position of positional parameter
SVALUE
: Value of the sub parameter
Returns a list of instream lines of the current DD statement. The list is empty when there are no instream lines. It issues a warning when the cur-rent statement is not DD.
Prototype
LST INSTREAM()
Returns
LST
Returns the number of instream lines of the current JCL statement.
Prototype
NUM INSTREAMCOUNT()
Returns
NUM
Returns TRUE if the object passed as a parameter contains NULL object. NULL object means no object, obtained for example by moving object pointer after the last one of before the first one.
Prototype
BOOL ISNULL(OBJ OBJECT)
Returns
BOOL
Parameters
OBJECT : The object value.
At the position specified by
To learn how to use the default abbreviations, visit the section about