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 – 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; }
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.