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.