The COPY statement is used to copy the contents of a syntax file. Information on the locking of objects (see REMOVE) is not copied. SDF-A inserts the copies into the syntax file being processed.
Definitions of BS2000 commands (implemented via system modules) may be copied into a user syntax file only when they are fully covered by the reference syntax files assigned (see OPEN-SYNTAX-FILE). The same applies to the case where an operand or operand value definition is being copied into the definition of a command implemented via system modules.
If the global information is copied, SDF-A overwrites the existing global information in the syntax file being processed.
The SDF default statements neither can nor need to be copied into the user syntax file. SDF provides these statements automatically for every program which has statements defined in syntax files. All standard statements released by Fujitsu are stored centrally in the syntax file of SDF as of V4.0A.
Before the definition of an operand or operand value is copied, it must be ensured that the object is the current one (e.g. another operand) after whose definition the copy is to be inserted into a command or statement definition (see ADD-OPERAND and ADD-VALUE). The operand or operand value must not yet have been defined in this environment. Otherwise, SDF-A refuses to perform the copy operation and issues an appropriate message.
The SHOW-SYNTAX-VERSIONS command supplied with earlier versions of SDF up to V3.0A cannot be copied to a user syntax file with COPY OBJECT=*COMMAND (NAME=*ALL). As of SDF V4.0A, the SHOW-SYNTAX-VERSIONS command is treated like any other command and can thus be copied to a user syntax file.
Certain operand values are context-sensitive. For example, a value defined with TYPE=*INTEGER(OUT-FORM=*STD) can be converted in different ways, depending on the implementation form:
If a command is defined with IMPLEMENTOR=*PROCEDURE or IMPLEMENTOR= *TPR(...,CMD-INTERFACE=*STRING,...), OUT-FORM=*STD is converted to OUT-FORM=*CHAR.
If a command is defined with IMPLEMENTOR=*TPR(...,CMD-INTERFACE=*NEW/*TRANSFER-AREA,...), OUT-FORM=*STD is converted to OUT-FORM=*BINARY.
If an object of this nature is copied from one context (e.g. ...,CMD-INTERFACE=*NEW/*TRANSFER-AREA,...) to another (e.g. ...,CMD-INTERFACE=*STRING,...), the user must adapt it to the context. This entails using the EDIT statement to position to the object in question and using the MODIFY statement to modify the object.
COPY |
OBJECT = *GLOBAL-INFORMATION / *DOMAIN(...) / *COMMAND(...) / *PROGRAM(...) / *STATEMENT(...) / *OPERAND(...) / *VALUE(...) *DOMAIN(...) NAME = *ALL(...) / <structured-name 1..30 with-wild> / list-poss(2000): <structured-name 1..30> *ALL(...) EXCEPT = *NONE / <structured-name 1..30 with-wild> / list-poss(2000): <structured-name 1..30> *COMMAND(...) NAME = *ALL(...) / <structured-name 1..30 with-wild> / list-poss(2000): <structured-name 1..30> *ALL(...) EXCEPT = *NONE / <structured-name 1..30 with-wild> / list-poss(2000): <structured-name 1..30> *PROGRAM(...) NAME = *ALL(...) / <structured-name 1..30 with-wild> / list-poss(2000): <structured-name 1..30> *ALL(...) EXCEPT = *NONE / <structured-name 1..30 with-wild> / list-poss(2000): <structured-name 1..30> *STATEMENT(...) NAME = *ALL(...) / <structured-name 1..30 with-wild> / list-poss(2000): <structured-name 1..30> *ALL(...) EXCEPT = *NONE / <structured-name 1..30 with-wild> / list-poss(2000): <structured-name 1..30> ,PROGRAM = <structured-name 1..30> *OPERAND(...) OPERAND-L1= *CURRENT / <structured-name 1..20> *NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME / *FILENAME / *PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL / *VSN / *COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30> ,OPERAND-L2= *NO / <structured-name 1..20> ,VALUE-L2 = *NO / *COMMAND-REST / *INTEGER / *LONG-INTEGER / *X-STRING / *C-STRING / *NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME / *FILENAME / *PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL / *VSN / *COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30> ,OPERAND-L3 = *NO / <structured-name 1..20> *NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME / *FILENAME / *PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL / *VSN / *COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30> ,OPERAND-L4 = *NO / <structured-name 1..20> *NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME / *FILENAME / *PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL / *VSN / *COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30> ,OPERAND-L5 = *NO / <structured-name 1..20> *COMMAND(...) *STATEMENT(...) *VALUE(...) OPERAND-L1 = *ABOVE-CURRENT / <structured-name 1..20> *NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME / *FILENAME / *PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL / *VSN / *COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30> ,OPERAND-L2 = *NO / <structured-name 1..20> ,VALUE-L2 = *NO / *COMMAND-REST / *INTEGER /*LONG-INTEGER / *X-STRING / *C-STRING / *NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME / *FILENAME / *PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL / *VSN / *COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30> ,OPERAND-L3 = *NO / <structured-name 1..20> *NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME / *FILENAME / *PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL / *VSN / *COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30>
*NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME / *FILENAME / *PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL / *VSN / *COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30>
*NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME / *FILENAME / *PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL / *VSN / *COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30>
*COMMAND(...) *STATEMENT(...) ,FROM-FILE = *CURRENT / *TASK-HIERARCHY / <filename 1..54 without-gen-vers>(...) <filename 1..54 without-gen-vers>(...) ,ATTACHED-INFO = *YES / *NO / *ONLY ,OVERWRITE-POSSIBLE = *NO / *YES / *EXTERNAL-ATTRIBUTES |
OBJECT =
Type of the object whose definition is to be copied.
OBJECT = *GLOBAL-INFORMATION
Specifies that the global information of a syntax file is to be copied.
OBJECT = *DOMAIN(...)
Specifies that the definitions of domains are to be copied.
NAME = *ALL(...)
The definitions of all domains are copied.
EXCEPT = *NONE / <structured-name 1..30 with-wild / list-poss(2000):<structured-name 1..30>
The definitions of the domains specified here are not copied.
NAME = <structured-name 1..30 with-wild / list-poss(2000): <structured-name 1..30>
The definitions of the named domains or of the domains matching the wildcard selector are copied.
OBJECT = *COMMAND(...)
Specifies that the definitions of commands are to be copied.
NAME = *ALL
The definitions of all commands are copied.
EXCEPT = *NONE / <structured-name 1..30 with-wild / list-poss(2000): <structured-name 1..30>
The definitions of the commands specified here are not copied.
NAME = <structured-name 1..30 with-wild / list-poss(2000):<structured-name 1..30>
The definitions of the named commands or of the commands matching the wildcard selector are copied.
OBJECT = *PROGRAM(...)
Specifies that the definitions of programs are to be copied.
NAME = *ALL(...)
The definitions of all programs are copied.
EXCEPT = *NONE / <structured-name 1..30 with-wild /list-poss(2000): <structured-name 1..30>
The definitions of the programs specified here are not copied.
NAME = <structured-name 1..30 with-wild / list-poss(2000): <structured-name 1..30>
The definitions of the named programs or of the programs matching the wildcard selector are copied.
OBJECT = *STATEMENT(...)
Specifies that the definitions of statements are to be copied.
NAME = *ALL(...)
The definitions of all statements are copied.
EXCEPT = *NONE / <structured-name 1..30 with-wild /list-poss(2000): <structured-name 1..30>
The definitions of the statements specified here are not copied.
NAME = <structured-name 1..30 with-wild / list-poss(2000):
<structured-name 1..30>
The definitions of the named statements or of the statements matching the wildcard selector are copied.
PROGRAM = <structured-name 1..30>
Name of the program to which the statements pertain. The program must have already been defined in the open syntax file.
OBJECT = *OPERAND(...)
Specifies that the definition of an operand is to be copied. If this operand is included in a structure, it is specified by the path leading to it, i.e. by specifying the operands and operand values that introduce the structure in this path. If the name of one of the operands in the path is unique, not only within its structure, but also with respect to the higher-ranking structure (or globally within the command or statement), the path need not be completely specified (it may even be omitted). An operand which is not absolutely essential to identify the operand definition to be copied, as well as the operand value pertaining to it, can be omitted. An operand value specified for VALUE-Li (i=1,...,5) must pertain to the operand defined by OPERAND-Li. After the first VALUE-Li = *NO, SDF-A takes the operand defined by OPERAND-Li as the one whose definition is to be copied. Subsequently, SDF-A does not interpret the specifications for any other OPERAND-Lj, VALUE-Lj. If a value other than *NO is specified for VALUE-Li, the value specified for OPERAND-Li + 1 must also be other than *NO.
OPERAND-L1 = *CURRENT / <structured-name 1..20>
Specifies the operand whose definition is to be copied (VALUE-L1 = *NO) or an operand in the path leading to it (VALUE-L1î
*NO). *CURRENT means that OPERAND-L1 is the current object. <structured-name> must be a globally unique operand name within the command or statement.
VALUE-L1 = *NO / *COMMAND-REST / *INTEGER /*LONG-INTEGER / *X-STRING / *C-STRING/*NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME / *FILENAME/*PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL / *VSN/*COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30>
*NO means that the definition of OPERAND-L1 is to be copied. Otherwise, an operand value that introduces a structure is to be specified. The structure must directly or indirectly contain the operand whose definition is to be copied. If the operand value introducing the structure is of the data type KEYWORD(-NUMBER), then the particular value defined for it is to be specified (see ADD-VALUE TYPE=*KEYWORD,...,VALUE= <c-string>). Here it must be remembered that this particular value is to be specified in each case without the prefixed asterisk. If the operand value introducing the structure is not of the type KEYWORD(-NUMBER), then the data type defined for it is to be specified.
OPERAND-L2 = *NO / <structured-name 1..20>
*NO means that OPERAND-L2 is irrelevant for the specification of the operand whose definition is to be copied. Otherwise, the name of an operand that is unique within the structure determined by VALUE-L1 is to be specified. This operand is either the one whose definition is to be copied (VALUE-L2=*NO) or one that is in the path leading to it (VALUE-L2î
*NO).
VALUE-L2 = analogous to VALUE-L1
*NO means that VALUE-L2 is irrelevant for the specification of the operand. Otherwise, an operand value introducing a structure is to be specified. The structure must directly or indirectly contain the operand whose definition is to be copied. For further information see VALUE-L1.
OPERAND-L3 = *NO / <structured-name 1..20>
*NO means that OPERAND-L3 is irrelevant for the specification of the operand whose definition is to be copied. Otherwise the name of an operand that is unique within the structure determined by VALUE-L2 is to be specified. This operand is either the one whose definition is to be copied (VALUE-L3=*NO) or one that is in the path leading to it (VALUE-L3î
*NO).
VALUE-L3= analogous to VALUE-L1
*NO means that VALUE-L3 is irrelevant for the specification of the operand. Otherwise, an operand value introducing a structure is to be specified. The structure must directly or indirectly contain the operand whose definition is to be copied. For further information see VALUE-L1.
OPERAND-L4 = *NO / <structured-name 1..20>
see OPERAND-L2.
VALUE-L4 = analogous to VALUE-L1
see VALUE-L2.
OPERAND-L5 = *NO / <structured-name 1..20>
see OPERAND-L2.
ORIGIN =
Specifies the command or statement to which the operand definition to be copied belongs.
ORIGIN = *CURRENT
The operand definition belongs to the same command (or statement) into which SDF-A is to insert the copy.
ORIGIN = *COMMAND (...)
The operand definition belongs to a command.
NAME = <structured-name 1..30>
Name of the command.
ORIGIN = *STATEMENT(...)
The operand definition belongs to a statement.
NAME = <structured-name 1..30>
Name of the statement.
PROGRAM = <structured-name 1..30>
Name of the program to which the statement pertains.
OBJECT = *VALUE(...)
Specifies that the definition of operand value is to be copied. This operand value is specified by the path leading to it, i.e. by specifying the operands and operand values introducing the structure in this path. If the operand value pertains to an operand that is not attached to any structure, the path contains only this operand. If the operand value does pertain to an operand attached to a structure, the path also includes the higher-ranking operands as well as the associated operand values introducing the structure. If the name of one of the operands in the path is unique, not only within its structure, but also with respect to the higher-ranking structure (or globally within the command or statement), the path need not be completely specified. An operand that is not absolutely essential to identify the operand value definition to be copied, as well as the operand value pertaining to it, can be omitted. An operand value specified for VALUE-Li (i=1,...,5) must pertain to the operand defined by OPERAND-Li. After the first OPERAND-Li+1 = *NO, SDF-A takes the operand value defined by VALUE-Li as the one whose definition is to be copied. Subsequently, SDF-A does not interpret the specifications for any other OPERAND-Lj, VALUE-Lj. If a value other than *NO is specified for OPERAND-Li, the value specified for VALUE-Li must likewise be other than *NO.
OPERAND-L1 = *ABOVE-CURRENT / <structured-name 1..20>
Specifies the operand to which the operand value whose definition is to be copied pertains (OPERAND-L2 = *NO) or an operand in the path leading to this operand value (OPERAND-L2î
*NO).
*ABOVE-CURRENT means that a value pertaining to OPERAND-L1 is the current object. <structured-name> must be a globally unique operand name within the command or statement.
VALUE-L1=*CURRENT / *COMMAND-REST / *INTEGER /*LONG-INTEGER / *X-STRING / *C-STRING / *NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME/*FILENAME / *PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL/*VSN/*COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30>
Specifies the operand value whose definition is to be copied (OPERAND-L2=*NO) or an operand value, introducing a structure, in the path leading to it (OPERAND-L2î
*NO). *CURRENT means that VALUE-L1 is the current object. If it is not the current object and of the data type KEYWORD(-NUMBER), then the particular value defined for it is to be specified (see ADD-VALUE TYPE=KEYWORD,...,VALUE=<c-string>).
Here it must be remembered that this particular value is to be specified in each case without the prefixed asterisk. If the operand value is not of the type
KEYWORD(-NUMBER), then the data type defined for it is to be specified.
OPERAND-L2 = *NO / <structured-name 1..20>
*NO means that the definition of VALUE-L1 is to be copied. Otherwise, the name of the operand to which the operand value whose definition is to be copied pertains (OPERAND-L3=*NO) or the name of an operand in the path leading to this operand value (OPERAND-L3î
*NO) is to be specified. If an operand name is specified, this must be unique within the structure defined by VALUE-L1.
VALUE-L2 = *NO / *COMMAND-REST / *INTEGER / *LONG-INTEGER / *X-STRING / *C-STRING / *NAME / *ALPHANUMERIC-NAME / *STRUCTURED-NAME / *FILENAME / *PARTIAL-FILENAME / *TIME / *DATE / *TEXT / *CAT-ID / *LABEL / *VSN / *COMPOSED-NAME / *X-TEXT / *FIXED / *DEVICE / *PRODUCT-VERSION / *POSIX-PATHNAME / *POSIX-FILENAME / <composed-name 1..30>
*NO means that the VALUE-L2 is irrelevant for the specification of the operand value to be copied. Otherwise, an operand value is to be specified. This operand value is either the one whose definition is to be copied (OPERAND-L3=*NO) or an operand value introducing a structure in the path leading to it (OPERAND-L3î
*NO). For further information see VALUE-L1.
OPERAND-L3 = *NO / <structured-name 1..20>
*NO means that OPERAND-L3 is irrelevant for the specification of the definition of the operand value to be copied. Otherwise, the name of the operand to which the operand value whose definition is to be copied pertains (OPERAND-L4=*NO) or the name of an operand in the path leading to this operand value (OPERAND-L4î
*NO) is to be specified. If an operand name is specified, this must be unique within the structure defined by VALUE-L2.
VALUE-L3 = analogous to VALUE-L2
*NO means that VALUE-L3 is irrelevant for the specification of the definition of the operand value to be copied. Otherwise an operand value is to be specified. This operand value is either the one whose definition is to be copied (OPERAND-L4=*NO) or an operand value, introducing a structure, in the path leading to it (OPERAND-L4î
*NO). For further information see VALUE-L1.
OPERAND-L4 = *NO / <structured-name 1..20>
see OPERAND-L3.
VALUE-L4 = analogous to VALUE-2
see VALUE-L2.
OPERAND-L5 = *NO / <structured-name 1..20>
see OPERAND-L3.
VALUE-L5= analogous to VALUE-2
see VALUE-L2.
ORIGIN =
Specifies the command or statement to which the operand value definition to be copied pertains.
ORIGIN = *CURRENT
The operand value definition to be copied pertains to the same command (or statement) into which SDF-A is to insert the copy.
ORIGIN = *COMMAND(...)
The operand value definition pertains to a command.
NAME = <structured-name 1..30>
Name of the command.
ORIGIN = *STATEMENT(...)
The operand value definition pertains to a statement.
NAME = <structured-name 1..30>
Name of the statement.
PROGRAM = <structured-name 1..30>
Name of the program to which the statement pertains.
FROM-FILE =
Syntax file containing the definitions or global information to be copied.
FROM-FILE = *CURRENT
The syntax file currently being processed contains the definitions to be copied. This is possible only when copying definitions of operands or operand values.
FROM-FILE = *TASK-HIERARCHY
The definition to be copied is taken from one of the syntax files which belong to the current syntax file hierarchy.
FROM-FILE = <filename 1..54 without-gen-vers>(...)
The syntax file named contains the definitions or global information to be copied.
TYPE = *CURRENT / *USER / *GROUP / *SYSTEM
The syntax file containing the definitions or the global information to be copied is
*CURRENT *USER *GROUP *SYSTEM | of the same type as the syntax file being processed a user syntax file a group syntax file a system syntax file. |
ATTACHED-INFO =
Specifies which of the definitions pertaining to the specified object is to be copied. For global information, programs and domains, SDF-A interprets the value ONLY as *YES.
ATTACHED-INFO = *YES
The definition of the specified object is copied, along with the definitions of all objects associated with the specified object (in other words: domain with associated commands, program with associated statements, command or statement with associated operand values, operand value with associated structure, global information with languagedependent texts).
ATTACHED-INFO = *NO
The definition of the specified object is copied without the definitions of the objects associated with the specified object (in other words: domain without associated commands, program without associated statements, command or statement without associated operands, operand without associated operand values, operand value without associated structure, global information without language-dependent texts).
ATTACHED-INFO = *ONLY
Only the definitions of objects associated with the specified object are copied. The definition of the specified object itself is not copied (examples: operand values without the operands to which they pertain; a structure without the operand value introducing it).
OVERWRITE-POSSIBLE =
Specifies whether the definition of a domain, command, program or statement is to be copied if the object is already defined in the open syntax file.
OVERWRITE-POSSIBLE = *NO
SDF-A rejects the copying of a domain, command, program or statement (and issues an appropriate message) if the object has already been defined in the syntax file being processed. Copying of global information is possible.
OVERWRITE-POSSIBLE = *YES
SDF-A performs the copy operation regardless of whether the object is already defined in the open syntax file. In this case, SDF-A replaces the existing definition in the open syntax file by the definition to be copied. A command or statement can be overwritten only if:
NAMEs or STANDARD-NAMEs are identical and
INTERNAL-NAMEs are identical.
OVERWRITE-POSSIBLE = *EXTERNAL-ATTRIBUTES
SDF-A copies the objects only, without the definitions of the objects themselves. The definitions of the objects which follow the overwritten domain or the program (e.g. commands or statements) remain the same. Specification of this operand is only possible when copying domains and programs (COPY OBJ=*DOMAIN... or OBJ=*PROGRAM...). The ATTACHED-INFO operand is given the value *NO, regardless of whether or not the user has specified a different value.