stdl_syntax(1) — Commands
Digital
NAME
STDL Syntax − describes rules and conventions for the ACMSxp Structured Transaction Definition Language
DESCRIPTION
STDL syntax makes use of the following elements to create definitions and specifications for the compile and build operations of developing an STDL application:
oReserved words
oPredefined words
oUser-defined words
oOperators
oPunctuators
The descriptions in the man pages use the notation described in the Syntax Notation section of this man page to illustrate the syntax created with these words.
Reserved Words
Reserved words are those used in the syntax of STDL definitions and specifications. You can use only the STDL alphanumeric character set for reserved words. Lowercase, uppercase, and mixed case reserved words are equivalent.
The following are the words reserved for STDL definition and specification syntax.
AND ELSE LANGUAGE SCALE
APPLICATION END LENGTH SELECT
ARE ENQUEUE LIST SEND
ARRAY EVERY SENDING
AS EXCEPTION MESSAGE SET
AT EXECUTION SHARED
AUDIT EXIT NATIONAL SIZE
NEXT SOURCE
BLOCK FIELD NO SPECIFICATION
BROADCAST FIRST NOMATCH STRING
BY FOR NOT SUBMIT
FROM NUMBER SUBMITTER
CALL SYSTEM
CANCEL GET OCTET
CASE GO OF TASK
CHARACTER GOTO ON TERMINATION
CLASS GROUP OPERATOR TEXT
CLIENT OR THEN
CODE HANDLER OUTPUT TO
COMMIT HOLD TRANSACTION
COMPOSABLE PASSED TRANSACTIONAL
ID PRESENTATION TRUE
CONTROL IDENTIFIER PRIVATE TYPE
IF PROCEDURE
DECIMAL IN PROCESSING UNTIL
DEPENDENT INDEPENDENT UPDATE
DEPENDING INITIALIZATION QUEUE USING
DEQUEUE INOUT UUID
DISPLAY INPUT RAISE
DO INTEGER READ VALUE
INTO RECEIVING VERSION
IS RECORD
REPEATING WAIT
KEY RERAISE WHILE
RESTART WITH
RESTARTABLE WORK
ROLLBACK WORKSPACE
WORKSPACES
Predefined Words
Only the STDL alphanumeric character set can be used for predefined words. Predefined words are used to specify:
oCharacter set identifiers
Identifies the execution character set to be used in the text data type:
SIMPLE-LATIN
Katakana
Kanji
ISO-LATIN-1
ISO-LATIN-2
ISO-UCS-2
oException class name (class identifier)
The name of one of the standard, predefined exception classes listed in the exceptions man page.
oSystem workspace identifiers
The following system workspace names are defined:
EXCEPTION-INFO-WORKSPACE
SYSTEM-INFO-WORKSPACE
See the workspace man page for a description of system workspaces.
User-Defined Words
User-defined words are either operating system names or identifiers.
Operating System Names
Operating system names are user-defined words outside the scope of STDL definitions and COBOL and C programs that are used in STDL definitions. Operating system names must:
oContain between 1 and 255 characters.
oContain only the following characters from the Simple Latin character set:
-Letters (uppercase and lowercase characters are equivalent)
-Numbers
-Underscores (_) and hyphens (-) (underscores and hyphens are equivalent)
-Not duplicate STDL reserved or predefined words.
-Begin with a letter.
-Not begin with tps_ or TPS_.
Details of the names appear in the Parameters sections for the syntax in which you must supply the name. Also, see the acmsadmin help for information about the managed entities that represent these names. When ACMSxp software sends an operating system name to another TPsystem in an RTI message, it converts lowercase characters to uppercase.
Specify an operating system name as an s-text workspace field or as a restricted string literal.
Identifiers
Identifiers are user-defined words that refer to names as follows:
oEntities within a definition (for example, a data type or a task name)
oEntities in another external definition (for example, a task name in another task group)
oEntities in preprocessing directives
Define identifiers using STDL definitions, COBOL and C programs, and STDL #DEFINE preprocessing directives.
Each identifier is classified by scope and by namespace:
oThe scope in which the identifier exists determines the part of the definitions in which an identifier is available for use:
-An external identifier is defined within a source file but outside a definition. After an external identifier is defined, it is available throughout the remainder of the source file at the compile operation.
-An internal identifier is defined within a definition and is available for use only within that definition.
oThe namespace in which the identifier exists determines the set of identifiers in which an identifier is grouped for the purpose of checking uniqueness. An identifier is either unqualified or qualified.
-An unqualified identifier is unique within its scope. An unqualified internal identifier hides an unqualified external identifier of the same name, except that an unqualified internal identifier does not hide an external unqualified identifier used as a data type identifier.
-A qualified identifier is qualified by either another qualified identifier (field names only) or by an unqualified identifier. Qualified identifiers are unique within the definition of the identifier by which they are qualified.
Unqualified and qualified identifiers can have either internal or external scope.
Both external and internal identifiers must:
oContain between 1 and 31 characters.
oContain only letters (uppercase and lowercase are equivalent), numbers, underscores (_), and hyphens (-) from the STDL alphanumeric character set. Underscores and hyphens are treated as equivalent characters.
oBegin with a letter.
oNot duplicate STDL reserved or predefined words.
oNot begin with tps_ or TPS_.
oNot end with an underscore (_) or hyphen (-).
The identifiers by scope and namespace are:
Identifier External Internal Unquali- Qualified Qualified by
fied
Data type X X
identifier
Field X X Data type
identifier identifier
or workspace
name
Label name X X
Message group X X
name
Message X X X Message group
identifier UUID
Presentation X X
group name
Presentation X X Presentation
procedure name group name
Processing X X
group name
Processing X X Processing
procedure name group name
Receive record X X Presentation
name group name
Send record X X Presentation
name group name
Task group name X X
Task name X X Task group
name
Workspace name
Shared X X
workspace
Private X X
workspace
Literals
STDL allows the following literals for use in STDL applications:
String literal
Restricted string literal
Integer literal
Decimal literal
String Literal
A string literal is a sequence of characters selected from one execution character set. A string literal:
oCan contain characters from a single character set. The Simple-Latin and ISO-Latin-1 character sets are used by STDL.
oMust start with double quotes (") and end with double quotes (") from the STDL alphanumeric character set.
If you include a double quote in a string literal, you must represent the double quote by two double quote characters ("").
If two sequences of characters enclosed in double quotes have an ampersand (&) between them (ignoring any white space), they are treated as a single string literal. The ampersand is from the STDL alphanumeric character set; the two sequences of characters must be from the same character set.
The maximum number of characters allowed in a string literal is 255.
Restricted String Literal
Some categories of string literal restrict the contents to the character set allowed or to the characters allowed within a character set:
oOperating-system-name literal
Contents are restricted to being an operating system name.
on-string literal
Contents are restricted to the numeric characters 0 through 9 from the Simple Latin character set.
oUUID-string literal
A string literal giving a universal unique identifier (UUID) where the contents are restricted to being numeric characters 0 through 9, alphabetic characters a through f, A through F, and the hyphen (-) from the Simple Latin character set. The string contains eight hexadecimal digits, a hyphen, three groups of four hexadecimal digits and a hyphen, and twelve hexadecimal digits.
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
where x is a hexadecimal digit.
oComputer-language literal
An operating system name specifying either C or COBOL.
oHuman-language literal
One of the human language names specified using the Simple Latin character set. Human languages are defined in the following format:
<language>_<territory>
The value <language> is a language symbol as defined in ISO 639:1988. The value <territory> is a country code (ALPHA-2) as defined in ISO 3166:1993. For example:
en_US
This represents the English language for the territory of the United States of America.
The contents of the literal are restricted to the values ENGLISH, JAPANESE, and and a standard human language. Each language is mapped to a particular execution character set or sets.
The language symbol is used to form a human language name specified in STDL message groups. See the message_group man page.
Integer Literal
An integer literal is sequence of characters selected from the numeric characters of the STDL alphanumeric character set:
o0 through 9
oPlus sign (+)
oMinus sign (-)
An integer literal must contain:
oAt least one numeric character.
oAt most one sign. If a sign is used, it must be the first character. If a sign is not used, the decimal literal is nonnegative.
Decimal Literal
A decimal literal is sequence of characters selected from the numeric characters of the STDL alphanumeric character set:
o0 through 9
oPlus sign (+)
oMinus sign (-)
oDecimal point (.)
A decimal literal must contain:
oAt least one numeric character.
oAt most one sign. If a sign is used, it must be the first character. If a sign is not used, the decimal literal is nonnegative.
oAt most one decimal point. The decimal point can appear anywhere except before a sign. If the decimal point is omitted, the decimal literal is treated as if a decimal point follows the last character.
Operators
STDL uses the following sets of operators:
Relational
Arithmetic
Assignment
Relational Operators
The relational operators used in Boolean expressions and their meanings are:
Operator Represents:
= Equal
<> Not equal
< Less than
<= Less than or equal
=< Less than or equal
> Greater than
>= Greater than or equal
=> Greater than or equal
Only the STDL alphanumeric character set can be used for a relational operator.
Arithmetic Operators
The arithmetic operators are:
+ Plus sign The arithmetic sum of the values of two
integer literals, of the contents of
two integer workspace fields, or of the
values of two integer expressions
If only one operand follows (unary
plus), the value of the integer literal,
the content of the integer workspace, or
the value of the integer expression.
- Minus sign The arithmetic difference of the values
of two integer literals, of the contents
of two integer workspace fields, or of
the values of two integer expressions
If only one operand follows (unary
minus), the value resulting by changing
the sign of the value of the integer
literal, the content of the integer
workspace, or the value of the integer
expression.
∗ Multiplication The arithmetic product of the values of
sign two integer literals, of the contents of
two integer workspace fields, or of the
values of two integer expressions
/ Division The arithmetic quotient of the values of
sign two integer literals, of the contents of
two integer workspace fields, or of the
values of two integer expressions
Only the STDL alphanumeric character set can be used for an arithmetic operator. Arithmetic operators must be preceded by white space and followed by white space.
The assignment operator (=) is used in STDL assignment statements and preprocessor directives.
Punctuators
The punctuation characters used in STDL definitions and specifications are:
: Colon Has the following uses:
Separates a label from the syntax
element or elements to which the label
refers.
Separates a Boolean expression from
the statement that is executed when the
expression evaluates true.
Separates the keyword NOMATCH from the
statement that is executed when no match
is found for a Boolean expression.
; Semicolon Terminates statements, field
definitions, and attributes.
, Comma Separates arguments when more than one
argument is being passed.
() Parentheses Can be used to enclose Boolean
expressions and delimit array
subscripts.
Only the STDL alphanumeric character set can be used for punctators.
Comment Text and Comment Character
Include comment text in STDL definitions and specifications using the exclamation mark (!) as a comment character. Include comment text by:
Beginning a source line with an exclamation mark
Insert an exclamation mark within a source line.
Comment text can contain:
oCharacters from the alphanumeric, ISO Latin 1, ISO Latin 2, Katakana, or Kanji character sets.
oHorizontal tabs
oForm feeds
Comment text is ignored when definitions and specifications are processed.
A comment character marks the beginning of comment text. All characters following the comment character in a source line are treated as comment text. Comment text terminates at the end of the source line. Comment text cannot be continued from one line to another. Within a string literal, a comment character is treated as part of the string literal.
Message Parameters
Within the text of messages in message definitions, you can specify parameters that ACMSxp software fills in when getting the message text at run time. The percent sign (%) and an integer literal from 1 to 9 indicates a message parameter.
Boolean Expressions
A Boolean expression has an evaluated value of either true or false. The format for a Boolean expression is:
{ <operand-1> <relational-operator> <operand-2> |
(<boolean-expression>) |
NOT <boolean-expression> |
<boolean-expression> { AND | OR } <boolean-expression>
}
Parentheses (open (() and closed ()) pairs) can be used to delimit the Boolean expression. Values within parentheses are evaluated first.
The following categories of conditions are associated with Boolean expressions:
oSimple condition
A simple condition compares two operands operand-1 and operand-2. A simple condition is either true or false based on the result of the comparison specified by the relational operator used.
oComplex condition
A complex condition is formed by combining simple conditions and complex conditions with the logical operators, AND and OR, or by negating these conditions with the negative logical operator, NOT. The value of a complex condition is the value that results from the interactions of the logical operators and negative logical operator among its constituent conditions. Rules for the logical operators are as follows:
-AND
Logical conjunction; the value is true if both conjoined conditions are true; the value is false if either one of the conjoined conditions is false or both conjoined conditions are false. The precedence of AND is higher than that of OR.
-OR
Logical inclusive OR; the value is true if either one included is true or both of the included conditions are true; the value is false if both included conditions are false.
-NOT
Logical converse of value; the value is true if the condition is false; the value is false if the condition is true.
The data types of the operand-1 and operand-2 operands must be compatible. The types of operands that can be compared and restrictions on the types of relational operators that can be used with different data types are:
Operand of Data Type: Can Compare with Operand of Data Type:
Array workspace Array workspace field that has the
field same array element data type, the
same level of array nesting, and
the same size of each level of array
nesting.
Variable-length array fields being
compared must have equal values of
the DEPENDING ON fields. Comparisons
are performed element by element.
Comparisons are for equality (=)
only. You cannot perform other
comparisons.
Class identifier Integer workspace field, integer
literal, or class identifier.
Data type workspace Data type workspace field
field Comparisons are for equality only.
Decimal workspace Decimal workspace field or decimal
field or decimal literal
literal The decimal points of the two fields
or literals are aligned. The field
or literal with fewer digits to the
left of the decimal point is padded
with zeros to the left. The field
or literal with fewer digits to the
right of the decimal point is padded
with zeros to the right.
Integer workspace Integer workspace field, message
field or integer identifier, class identifier, or
literal integer literal
Message group Message group identifier, UUID-
identifier workspace field, or UUID string
literal.
Comparisons are for equality only.
Message identifier Message identifier, integer workspace
field, or integer literal.
Octet workspace Octet workspace field
field Comparisons are for equality (=)
only. You cannot perform other
comparisons.
Record workspace Record workspace field whose fields
field or subfields must match in order,
data type, and size
Comparisons are for equality (=)
only. You cannot perform other
comparisons. Comparisons are
performed field by field.
Text workspace field Text workspace field or string
or string literal literal
Text to be compared must be of the
same character set. Comparisons
of alphabetic characters are case
sensitive.
In comparisons of text fields or
strings of unequal length, ACMSxp
software pads the shorter text field
or string with spaces to the right
for the comparison.
UUID-workspace field UUID-workspace field, message group
identifier, or UUID-string literal
Comparisons are for equality (=)
only. No other comparisons are
supported.
Syntax Notation
The syntax diagrams in the ACMSxp STDL man pages observe the following conventions:
oSyntax is all uppercase.
Underlined uppercased words are required for that syntax element.
Uppercased words without underlines are optional. Include them for readability.
oBraces { } indicate mandatory choices.
One and only one of the choices immediately adjacent to the opening brace must be used. When braces enclose only a single choice, they still indicate that the choice is required, but serve to clarify the full scope of the required elements.
oBrackets [ ] indicate optional choices. Zero, one, or more of the enclosed syntax elements can be used.
oVertical bars (|) separate choices within brackets or braces.
oHorizontal ellipses (...) indicate repetition.
Within brackets [ ... ] horizontal ellipses indicate optional repetition of the syntax element immediately to the left of the brackets.
Horizontal ellipses preceded by a comma within brackets [ ,... ] indicate that the optional repetitions must be separated by commas.
RELATED INFORMATION
Command: stdl(1)