Stores a segmented string into a segmented string field. Must be nested within a regular STORE statement.
1 – Examples
The following programs demonstrate the use of the STORE statement to store segmented strings in a record. These programs: o Declare an array to hold the segmented strings to be stored. o Assign values to the array. o Use a STORE operation to store the employee ID in the RESUMES record. o Use an inner STORE operation to store the segmented strings. This ensures that the employee ID and the segmented strings are stored in the same record. o Store the values from the array into the RESUME field of RESUMES. o Complete the STORE operation. o Retrieve the segmented strings (just stored) using a nested FOR statement. For more information on retrieving segmented strings, see the entry on FOR Seg_String.
1.1 – C Example
#include <stdio.h> DATABASE PERS = FILENAME "PERSONNEL"; main() { int line; char *document[3]; document[0] = "first line of resume "; document[1] = "second line of resume "; document[2] = "last line of resume "; READY PERS; START_TRANSACTION READ_WRITE; STORE R IN RESUMES USING strcpy (R.EMPLOYEE_ID,"12345"); for (line = 0; line <= 2; line++) STORE LINE IN R.RESUME strcpy(LINE.VALUE,document[line]); LINE.LENGTH = strlen(LINE.VALUE); END_STORE; END_STORE; FOR R IN RESUMES WITH R.EMPLOYEE_ID = "12345" FOR LINE IN R.RESUME printf("%s\n",LINE.VALUE); END_FOR; END_FOR; COMMIT; FINISH; }
1.2 – Pascal Example
program segstr (input,output); DATABASE PERS = FILENAME 'PERSONNEL'; type lines = varying [80] of char; var linecnt : integer; document : array [0..2] of lines; begin document[0] := 'first line of resume '; document[1] := 'second line of resume '; document[2] := 'last line of resume '; READY PERS; START_TRANSACTION READ_WRITE; STORE R IN RESUMES USING R.EMPLOYEE_ID:= '12345'; for linecnt := 0 to 2 do STORE SEG IN R.RESUME SEG := document[linecnt]; SEG.LENGTH := length(document[linecnt]); END_STORE; END_STORE; COMMIT; START_TRANSACTION READ_WRITE; FOR R IN RESUMES WITH R.EMPLOYEE_ID = '12345' FOR SEG IN R.RESUME writeln(SEG); END_FOR; END_FOR; COMMIT; FINISH; end.
2 – Format
(B)0[m[4mSTORE[m qqqqqwq>qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq>qqwqqqqqqqk mq> ( qq> [4mTRANSACTION_HANDLE[m qq var qq> )qj x lqqqqqq<qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq<qqqqqqqqqqj mqq> ss-handle qqq> [4mIN[m qqqq> ss-field qqqqqqqqqqqqqqqqqqk lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq<qqqqqqqqqqqqqqqqqqqqqqqqqj mqq> [4mUSING[m qqqwq>qqqqqqqqqqqqwqqqqqqqqqqqqqqqqqqk mq> on-error qqj x lqqqqqqqqqqqqqqq<qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj mqqqqqqqqqqqqqqqq assignment qqqqqqqqqqqq>qqqqqqk x lqqqqqqqqqqqqqqqqqqqqqqqqqqqq<qqqqqqqqqqqqqqqqqqj mqqqq> [4mEND_STORE[m qqqqq>
2.1 – Format arguments
TRANSACTION_HANDLE The TRANSACTION_HANDLE keyword followed by var a host language variable. A transaction handle identifies a transaction. If you do not supply a transaction handle explicitly, RDML uses the default transaction handle. ss-handle A segmented string handle. A name that identifies the segmented string. ss-field A qualified field name that refers to a field defined with the SEGMENTED STRING data type. Note that this field name, like all field names in a FOR statement, must be qualified by its own context variable. This second context variable must match the variable declared in the outer FOR statement. See the Examples entry. on-error The ON ERROR clause. Specifies host language statement(s) to be performed if an error occurs during the STORE operation. For more information see the entry on ON ERROR. assignment Associates the two database variables with a value expression. The database variables refer to the segment of a segmented string and its length. The special name for the segment can be either "VALUE" or "RDB$VALUE". The special name for the segment length can be either "LENGTH" or "RDB$LENGTH". You cannot assign any other database variables to the value expressions for segmented strings. The assignment operator for RDML Pascal is ":=" and for RDML C is "=" or strcpy.