Obtains details of the syntax of a command and the source code of a procedure.
No options
Parameters
COMMAND = texts |
Single-line texts specifying the commands |
NOPTIONS = scalars |
Number of options for each command |
NPARAMETERS = scalars |
Number of parameters for each command |
NAME = texts |
Names of the options, and then the parameters, of each command |
MODE = texts |
Modes of the options and parameters |
NVALUES = pointers |
Number of values allowed for the options and parameters |
VALUES = pointers |
Allowed values for the options and parameters |
DEFAULT = pointers |
Default values for the options and parameters |
SET = texts |
Whether the options and parameters must be set |
DECLARED = texts |
Whether the options and parameters must have been declared |
TYPE = pointers |
Allowed types for the options and parameters |
COMPATIBLE = pointers |
Aspects of the options and parameters that must be compatible with the first parameter |
PRESENT = texts |
Whether the options and parameters must have values |
LIST = texts |
Whether the options have more than one setting (not relevant for the parameters |
INPUT = texts |
Whether the options and parameters only supply input information |
DEFINITION = texts |
Saves statements to define the syntax |
SOURCE = texts |
Saves the source code of a procedure |
Description
SYNTAX
enables you to obtain details about the syntax of a command (i.e. a directive or a procedure). The name of the command must be supplied in a single-value text, using the COMMAND
parameter. The NOPTIONS
parameter gives its number of options, and the NPARAMETER
S parameter gives the number of parameters.
The other parameters give details of the options and parameters. These correspond to the parameters of the OPTION
and PARAMETER
directives.
The NAMES
parameter saves a text containing the names of the options (if any), followed by the names of any parameters.
The MODE
parameter saves a text giving the modes of the options and parameters: whether their settings should be a number (v
), or an identifier of a data structure (p
), or a string (t
), or an expression (e
), or a formula (f
). These codes are exactly the same as those that indicate the mode of the values to appear within the brackets containing an unnamed structure.
The NVALUES
saves a pointer defining how many values the structures that are supplied for options and parameters of mode p
may contain. The element of the pointer is a scalar there is only one possibility, and a variate if there are several.
The VALUES
saves a pointer containing the allowed set of values that may have been defined for options and parameters with modes t
and v
. The element of the pointer will be a text for an option or parameter of mode t
, and either a scalar or a variate for an option or parameter of mode v
.
The DEFAULT
parameter saves a pointer containing the default settings that may have been defined for the options and parameters with modes t
and v
.
The SET
parameter saves a text containing ‘yes
‘ or ‘no
‘ according to whether or not the options and parameters must be set.
The DECLARED
parameter saves a text containing ‘yes
‘ or ‘no
‘ according to whether or not the options and parameters of mode p must be set to a data structure that has already been declared.
The TYPE
parameter saves a pointer containing a text to indicate the allowed types of the structures to which each option and parameter of mode p
can be set.
The COMPATIBLE
parameter saves a pointer containing a texts to specify aspects of the options and parameters that must be compatible with the first parameter.
The PRESENT
parameter saves a text containing ‘yes
‘ or ‘no
‘ according to whether or not the options and parameters must be set to a data structure that has values.
The INPUT
parameter saves a text containing ‘yes
‘ or ‘no
‘ according to whether or not the options and parameters are be used only to provide input to the command.
The DEFINITION
parameter can save statements, in a text, to define the syntax. These start with a DEFINE
statement for a directive or a PROCEDURE
statement for a procedure, then an OPTION
statement to define any options, and a PARAMETER
statement to define any parameters.
The SOURCE
parameter can save the source code of a procedure. This can be useful if you have a library containing the procedure, but no longer have the original source file. Note, though, that the source that you save will not be identical to the original source. When procedures are defined within Genstat, their source code is processed to remove comments and extraneous spaces in order to save storage space.
Parameters: COMMAND
, NOPTIONS
, NPARAMETERS
, NAME
, MODE
, NVALUES
, VALUES
, DEFAULT
, SET
, DECLARED
, TYPE
, COMPATIBLE
, PRESENT
, LIST
, INPUT
, DEFINITION
, SOURCE
.
See also
Directives: COMMANDINFORMATION
, OPTION
, PROCEDURE
.
Procedures: SPSYNTAX
.
Commands for: Program control.
Example
" Example 1:5.3.2, 1:5.4.5, 1:5.4.6 " PROCEDURE '%TRANSFORM' " Define the arguments of the procedure." OPTION NAME='METHOD'; MODE=t; \ VALUES=!t(Logit,Comploglog,Angular); \ DEFAULT='LOGIT' PARAMETER NAME='PERCENT','RESULT'; \ MODE=p; SET=yes; DECLARED=yes,no; \ TYPE=!t(scalar,variate,matrix,symmetric,diagonal,table);\ COMPATIBLE=*,!t(type,nvalues); \ PRESENT=yes,no IF METHOD .EQS. 'Logit' CALCULATE RESULT = LOG( PERCENT / (100-PERCENT) ) ELSIF METHOD .EQS. 'Comploglog' CALCULATE RESULT = LOG( -LOG((100-PERCENT)/100) ) ELSIF METHOD .EQS. 'Angular' CALCULATE RESULT = ANGULAR(PERCENT) ENDIF ENDPROCEDURE VARIATE [VALUES=10,20...90] Every10% " default setting 'logit' for METHOD " %TRANSFORM Every10%; RESULT=Logit10% PRINT Every10%,Logit10%; DECIMALS=0,3 %TRANSFORM [METHOD=A] 25,50,75; RESULT=Ang25,Ang50,Ang75 PRINT Ang25,Ang50,Ang75 COMMANDINFORMATION '%TRANSFORM','CAPTION','DOTPLOT','NOTONE';\ IMPLEMENTATION=tranimp,capimp,dotimp,notimp;\ CHANNEL=tranchan,capchan,dotchan,notchan;\ PRESENT=trancheck,capcheck,dotcheck,notcheck PRINT tranimp,tranchan,trancheck & capimp,capchan,capcheck & dotimp,dotchan,dotcheck & notimp,notchan,notcheck SYNTAX '%TRANSFORM'; NOPTIONS=nopt; NPARAMETERS=npar; NAME=names;\ MODE=modes; NVALUES=nvals; VALUES=values; DEFAULT=default;\ SET=set; DECLARED=declared; TYPE=types; COMPATIBLE=compat;\ PRESENT=present; LIST=list; INPUT=input; SOURCE=source PRINT nopt,npar; DECIMALS=0 & names,modes,set,declared,list,input,present;\ FIELD=*,6,4,9,5,6,8; JUST=left,6(right) FOR [INDEX=i; NTIMES=nopt+npar] IF NMV(NVALUES(nvals[i])) ASSIGN 'No nvals'; POINT=nvals; ELEMENT=i ENDIF IF NMV(NVALUES(values[i])) ASSIGN 'No values'; POINT=values; ELEMENT=i ENDIF IF NMV(NVALUES(default[i])) ASSIGN 'No default'; POINT=default; ELEMENT=i ENDIF IF NMV(NVALUES(types[i])) ASSIGN 'No types'; POINT=types; ELEMENT=i ENDIF IF NMV(NVALUES(compat[i])) ASSIGN 'No compat'; POINT=compat; ELEMENT=i ENDIF ENDFOR PRINT [SQUASH=yes; ORIENT=across] nvals[] & values[] & default[] & types[] & compat[] PRINT source; JUST=left