ASK STRUCTURE struc_name, FIELD field_expr: LENGTH num_var
LENGTH returns the length of the specified field in a numeric variable.
ASK STRUCTURE struc_name, FIELD field_expr: NAME str_var
NAME returns the name of the specified field in a string variable.
ASK STRUCTURE struc_name, FIELD field_name: NULL int_var
If the specified field is NULL (i.e. contains no data), this statement returns TRUE. If the field is not NULL, the statement returns FALSE.
ASK STRUCTURE struc_name, FIELD field_expr: NUMBER num_var
NUMBER returns the field number of the specified field in a numeric variable. Fields are numbered sequentially. If the field does not exist, INTOUCH returns a value of 0.
ASK STRUCTURE struc_name, FIELD field_expr: OPTIMIZED num_var
OPTIMIZED returns a value of TRUE or FALSE in a specified numeric variable. If the key field in field_expr is optimized, the value is TRUE. Otherwise, the value is FALSE.
10 OPEN STRUCTURE cl: NAME 'tti_run:client' ASK STRUCTURE cl, FIELD id: OPTIMIZED z PRINT z CLOSE STRUCTURE cl 20 END RNH 1
ASK STRUCTURE struc_name, FIELD field_expr: POSITION num_var
POSITION returns the starting position for the specified field in a numeric variable.
ASK STRUCTURE struc_name, FIELD field_expr: PRINTMASK str_var
PRINTMASK returns the print mask for the specified field in a string variable.
ASK STRUCTURE struc_name, FIELD field_expr: PROMPT str_var
PROMPT returns the prompt for the specified field in a string variable.
ASK STRUCTURE struc_name, FIELD field_expr: SCREENMASK str_var
SCREENMASK returns the screen mask for the specified field in a string variable. This option is not currently used.
ASK STRUCTURE struc_name, FIELD field_expr: VRULES str_var
VRULES returns the validation rules for the specified field in a string variable.
You can refer to the "VALID" function item in Section A.2, Other Functions for information on validation rules.
10 OPEN STRUCTURE cl : NAME 'tti_run:client' ASK STRUCTURE cl, FIELD bday: VRULES str$ PRINT str$ 20 END RNH date ymd; minlength 8
ASK STRUCTURE struc_name: CURRENT str_var
10 DIM a$(100) LET i = 0 20 OPEN STRUCTURE cl: NAME 'tti_run:client' 30 EXTRACT STRUCTURE cl END EXTRACT 40 FOR EACH cl PRINT cl(last); ', '; cl(first) INPUT 'Would you like to see this record (Y/N)': yn$ IF yn$ = 'Y' THEN LET i = i + 1 ASK STRUCTURE cl: CURRENT a$(i) END IF NEXT cl 50 PRINT FOR j = 1 TO i SET STRUCTURE cl: CURRENT a$(j) PRINT cl(last); ','; cl(first), cl(state), cl(phone) NEXT j 60 END RNH Errant, Earl Would you like to see this record (Y/N)? Y Abott, Al Would you like to see this record (Y/N)? Y Brock, Bud Would you like to see this record (Y/N)? N Cass, Cathy Would you like to see this record (Y/N)? N Derringer, Dale Would you like to see this record (Y/N)? Y Farmer, Fred Would you like to see this record (Y/N)? Y Errant, Earl CA (408) 844-7676 Abott, Al NY (202) 566-9892 Derringer, Dale CA (818) 223-9014 Farmer, Fred FL (305) 552-7872
ASK STRUCTURE: CURRENT assigns the current record value to the str_var. Once the current record has been assigned with ASK STRUCTURE: CURRENT, you can use the SET STRUCTURE: CURRENT statement to get this record.
INTOUCH returns a zero length string if there is no CURRENT record.
ASK STRUCTURE struc_name: FIELDS num_var
10 OPEN STRUCTURE cl: NAME 'tti_run:client', ACCESS INPUT ASK STRUCTURE cl: FIELDS z PRINT z 20 END RNH 18
You can find out the number of fields in a structure with the ASK STRUCTURE: FIELDS statement. The number is assigned to the numeric variable num_var.
ASK STRUCTURE struc_name: KEYS num_var
10 OPEN STRUCTURE cl: NAME 'tti_run:client', ACCESS INPUT ASK STRUCTURE cl: KEYS z PRINT z 20 END RNH 2
The ASK STRUCTURE: KEYS statement returns the number of keys that are accessible by INTOUCH. It returns the value of 0 if no keys are available.
14.8.5 ASK STRUCTURE: CAPABILITY
ASK STRUCTURE struc_name: CAPABILITY str_var
10 OPEN STRUCTURE cl: NAME 'tti_run:client', ACCESS INPUT ASK STRUCTURE cl: CAPABILITY z$ PRINT z$ 20 END RNH INDEXED,INPUT
Given a structure expression, ASK STRUCTURE: CAPABILITY sets str_expr to a comma delimited string containing one or more of the following: INDEXED, RELATIVE, INPUT, OUTPUT
Structure Type | Description |
---|---|
RELATIVE | You can access a structure, using a relative record number, with statements such as ASK/SET STRUCTURE...RECORD. |
INDEXED | The structure is indexed; you can access it by key with statements such as SET STRUCTURE...KEY. |
INPUT | You can read from the structure. |
OUTPUT | You can write to the structure. |
null string | The structure is not currently open. |
14.8.6 ASK STRUCTURE: EXTRACTED
ASK STRUCTURE struc_name: EXTRACTED num_var
10 OPEN STRUCTURE cl: NAME 'tti_run:client' EXTRACT STRUCTURE cl END EXTRACT ASK STRUCTURE cl: EXTRACTED z PRINT 'Records found: '; z 20 END RNH Records found: 13
ASK STRUCTURE: EXTRACTED asks the operating system for the last extracted count for the structure specified.
ASK STRUCTURE struc_name: ID str_var
10 DECLARE STRUCTURE str OPEN STRUCTURE cl: NAME 'tti_run:client' ASK STRUCTURE cl: ID cl_id$ SET STRUCTURE str: ID cl_id$ 20 EXTRACT STRUCTURE str END EXTRACT FOR EACH str PRINT str(#1); ' '; str(#2) NEXT str 30 END RNH 20000 Smith 20001 Jones 20002 Kent 23422 Johnson 32001 Waters 43223 Errant 80542 Brock 80543 Cass 80544 Porter 80561 Derringer 80573 Farmer
The ASK STRUCTURE: ID statement asks the operating system for the ID of a structure and returns it in the string variable str_var.
ASK STRUCTURE struc_name: POINTER num_var
10 OPEN STRUCTURE cl: NAME 'tti_run:client' EXTRACT STRUCTURE cl END EXTRACT FOR EACH cl ASK STRUCTURE cl: POINTER ptr PRINT ptr, cl(last) NEXT cl 20 END RNH 1 Smith 2 Jones 3 Kent 4 Johnson 5 Waters 6 Errant 7 Brock 8 Cass 9 Porter 10 Derringer 11 Farmer
From within a FOR EACH...NEXT STRUCTURE_NAME block, ASK STRUCTURE: POINTER asks the structure for the number of the current record pointer.
ASK STRUCTURE struc_name: RECORD num_var
10 OPEN STRUCTURE ml: NAME 'tti_run:maint_log' EXTRACT STRUCTURE ml ASK STRUCTURE ml: RECORD ml_rec PRINT ml_rec, ml(cost) END EXTRACT 20 END RNH 1 $450.00 2 $3,200.00 3 $370.00 4 $1,200.00 5 $600.00 6 $770.00
ASK STRUCTURE: RECORD asks for the relative record number of the current record and places that number in the numeric variable given.
14.8.10 ASK STRUCTURE: RECORDSIZE
ASK STRUCTURE struc_name: RECORDSIZE int_var
10 OPEN STRUCTURE cl: NAME 'tti_run:client' 20 ASK STRUCTURE cl: RECORDSIZE recsize 30 PRINT 'Logical recordsize: '; recsize 40 END RNH Logical recordsize: 400
The ASK STRUCTURE: RECORDSIZE statement returns the record size of the structure data file.
ASK STRUCTURE struc_name: ACCESS str_var
10 OPEN STRUCTURE inv: NAME 'tti_run:invoice', ACCESS INPUT 20 ASK STRUCTURE inv: ACCESS x$ 30 PRINT x$ 40 CLOSE STRUCTURE inv 50 END RNH SECURITY:N, READ:N, WRITE:N, UPDATE:N, DELETE:N
The ASK STRUCTURE: ACCESS statement retrieves the access rules for the specified structure. Security level, data file read, write, update, and delete rules are returned.
14.8.12 ASK |SET STRUCTURE: TIMEOUT
ASK STRUCTURE struc_name: TIMEOUT int_var SET STRUCTURE struc_name: TIMEOUT int_expr
The ASK STRUCTURE: TIMEOUT statement asks for the current TIMEOUT setting.
The SET STRUCTURE: TIMEOUT statement is used when a record is locked for over the int_expr. INTOUCH then returns a TIMEOUT error.
14.8.13 ASK | SET STRUCTURE #string_expr . . .
ASK STRUCTURE #string_expr. . . SET STRUCTURE #string_expr. . .
10 OPEN STRUCTURE cl: NAME 'tti_run:client' str$ = 'CL' fld$ = 'ID' do_work STOP 20 ROUTINE do_work ASK STRUCTURE #str$, FIELD #fld$: DESCRIPTION dsc$ PRINT 'Description is: '; dsc$ END ROUTINE 30 END RNH Description is: Client ID number
You can use a string expression for the structure name in an ASK STRUCTURE #string_expr or SET STRUCTURE #string_expr statement. This allows you to write generalized code to work for several structures.
ASK STRUCTURE struc_name : ENGINE str_var
10 OPEN STRUCTURE cl : name 'tti_run:vendor' 20 ASK STRUCTURE cl : ENGINE ename$ 30 PRINT 'DATABASE ENGINE is: '; ename$ 40 END RNH DATABASE ENGINE is: RMS
The ASK STRUCTURE: ENGINE statement returns the name of the database engine (record management system) being used for the specified structure in str_var.
The SET STRUCTURE statement is used to change various device and structure characteristics from within your programs.
SET STRUCTURE struc_name: struc_option [num_var | str_var]
SET STRUCTURE sets characteristics of structures. struc_name is the name of the structure whose characteristics are being set. struc_option is the option you are setting. The options are explained in the following sections.
SET STRUCTURE struc_name: CURRENT str_expr
10 DIM a$(100) LET i = 0 20 OPEN STRUCTURE cl: NAME 'tti_run:client' 30 EXTRACT STRUCTURE cl END EXTRACT 40 FOR EACH cl PRINT cl(last); ', '; cl(first) INPUT 'Would you like to see this record (Y/N)': yn$ IF yn$ = 'Y' THEN LET i = i + 1 ASK STRUCTURE cl: CURRENT a$(i) END IF NEXT cl 50 PRINT FOR j = 1 TO i SET STRUCTURE cl: CURRENT a$(j) PRINT cl(last); ','; cl(first), cl(state), cl(phone) NEXT j 60 END RNH Errant, Earl Would you like to see this record (Y/N)? Y Abott, Al Would you like to see this record (Y/N)? Y Brock, Bud Would you like to see this record (Y/N)? N Cass, Cathy Would you like to see this record (Y/N)? N Derringer, Dale Would you like to see this record (Y/N)? Y Farmer, Fred Would you like to see this record (Y/N)? Y Errant, Earl CA (408) 844-7676 Abott, Al NY (202) 566-9892 Derringer, Dale CA (818) 223-9014 Farmer, Fred FL (305) 552-7872
The CURRENT option sets the current record to that specified by the str_expr. The str_expr contains the information for the current record for the record management system you are using. You can use ASK STRUCTURE: CURRENT to store a current record value into a string variable.
When INTOUCH executes a SET STRUCTURE: CURRENT statement, it uses the structure name and sets the current record to the value specified by the string variable. The structure must be open and str_expr must contain a value stored with the ASK STRUCTURE: CURRENT statement.
If you use a null string for the value, INTOUCH sets the structure to no current record and sets _EXTRACTED to zero.
SET STRUCTURE struc_name: CURRENT ''
14.9.2 SET STRUCTURE, FIELD: KEY
SET STRUCTURE struc_name, FIELD field_expr: KEY str_expr
10 OPEN STRUCTURE cl: NAME 'tti_run:client' LINE INPUT 'Enter an ID': id$ SET STRUCTURE cl, FIELD id: KEY id$ IF _EXTRACTED = 0 THEN MESSAGE ERROR: 'Not found' ELSE PRINT cl(id), cl(last) END IF 20 END RNH Enter an ID? 80561 80561 Derringer
The FIELD option lets you get a record by means of a key field in a structure. You can use SETUP's "SHOW FIELDS" menu option (see Chapter 16, Creating Structures, Field Definitions with SETUP) to see the field names. The FIELD option is currently used only with the KEY or PARTIAL KEY option. The KEY option specifies the key to look for. The key is contained in str_expr.
The above example shows how to look in the CLIENT structure for an ID.
_EXTRACTED contains the number of records extracted. If the operation fails, _EXTRACTED will be 0 and an error message will be displayed.
14.9.3 SET STRUCTURE, FIELD: PARTIAL KEY
SET STRUCTURE struc_name, FIELD field_expr: PARTIAL KEY str_expr
10 OPEN STRUCTURE cl: NAME 'tti_run:client' INPUT 'Name': name$ SET STRUCTURE cl, FIELD last: PARTIAL KEY name$ PRINT cl(id); ' '; cl(last) 20 END RNH Name? D 80561 Derringer
This statement retrieves the first record matching the partial key in str_expr.
SET STRUCTURE struc_name: ID str_expr
10 DECLARE STRUCTURE str OPEN STRUCTURE cl: NAME 'tti_run:client' ASK STRUCTURE cl: ID cl_id$ SET STRUCTURE STR: ID cl_id$ 20 EXTRACT STRUCTURE str END EXTRACT FOR EACH str PRINT str(#1); ' '; str(#2) NEXT str 30 END RNH 20000 Smith 20001 Jones 20002 Kent 23422 Johnson 32001 Waters 43223 Errant 80542 Brock 80543 Cass 80544 Porter 80561 Derringer 80573 Farmer
SET STRUCTURE: ID sets a structure to a structure ID that you have stored previously into a string variable with the ASK STRUCTURE: ID statement. Once you have used the SET STRUCTURE: ID statement, you can access the structure with the new structure name (STR in the example). By using these statements, you can write generalized routines when you do not know which structure you are going to access until run time.
SET STRUCTURE struc_name: POINTER num_expr
10 OPEN STRUCTURE cl: NAME 'tti_run:client' EXTRACT STRUCTURE cl END EXTRACT SET STRUCTURE cl: POINTER 3 PRINT cl(id); ' ' ; cl(last) 20 END RNH 20000 Kent
This statement sets the structure to the nth record extracted. The statement is useful after you have done an extract, because it provides random access to any record extracted. There is no error message if there are no records extracted, or if the number given is out of range. If the number is valid, _EXTRACTED is set to 1; otherwise, it is set to 0.
SET STRUCTURE struc_name: RECORD num_expr
10 OPEN STRUCTURE ml: NAME 'tti_run:maint_log' SET STRUCTURE ml: RECORD 3 PRINT ml(cost) 20 END RNH $370.00
SET STRUCTURE: RECORD sets the structure to the record number given. The statement works only for structures that support relative record access.
14.9.7 SET STRUCTURE: EXTRACTED 0
SET STRUCTURE struc_name: EXTRACTED 0
10 OPEN STRUCTURE vend: NAME 'tti_run:vendor' SET STRUCTURE vend: EXTRACTED 0 20 END
Setting the number of records extracted to zero causes a new collection to be started. The SET STRUCTURE struc_name : EXTRACTED 0 statement is used in conjunction with the EXTRACT STRUCTURE struc_name: APPEND statement.
14.9.8 SET STRUCTURE, SET, USING: EXPRESSION 'owner'
SET STRUCTURE struc_name1, SET 'set_name', USING struc_name2: EXPRESSION 'owner'
10 OPEN STRUCTURE class: name 'devint:intest_dbms' 20 OPEN STRUCTURE part : name 'devint:intest_dbms' SET STRUCTURE class, SET 'class_part', USING part: EXPRESSION 'owner' 30 END
This statement used for DBMS handling, fetches the owner of the structure specified by struc_name1. The structure specified by struc_name2 is the owner of struc_name1 with the set given in set_name.
14.9.9 SET STRUCTURE, SET: EXPRESSION 'owner'
SET STRUCTURE struc_name1, SET 'set_name': EXPRESSION 'owner'
10 OPEN STRUCTURE class: name 'devint:intest_dbms' 20 OPEN STRUCTURE part : name 'devint:intest_dbms' SET STRUCTURE class, SET 'class_part': EXPRESSION 'owner' 30 END
14.9.10 SET STRUCTURE, SET, USING, FIELD: KEY
SET STRUCTURE struc_name1, SET 'set_name', USING 'struc_name2', FIELD field_expr: KEY str_expr
10 OPEN STRUCTURE class: name 'devint:intest_dbms' 20 OPEN STRUCTURE part : name 'devint:intest_dbms' SET STRUCTURE class, SET 'class_part', USING part, FIELD & class_code: KEY cl_code$ 30 END