Causes DEC DATATRIEVE to execute a statement or group of statements once for each record in the record stream formed by a record selection expression (RSE). The FOR statement provides repeating loops for DEC DATATRIEVE operations. Format FOR rse statement
1 – Arguments
rse Is a record selection expression that forms the record stream that controls the number of times DEC DATATRIEVE executes the statement and controls the single-record context for the statement. statement Is either a simple or a compound statement you want DEC DATATRIEVE to execute once for each record in the record stream formed by the RSE. You can form compound DEC DATATRIEVE statements with the BEGIN-END, IF-THEN-ELSE, and THEN statements, which are described in this chapter.
2 – Examples
The following example assigns a value to the field PRICE for three yachts with prices equal to zero: DTR> READY YACHTS MODIFY DTR> SET NO PROMPT DTR> FIND FIRST 3 A IN YACHTS WITH PRICE = 0 [3 records found] DTR> PRINT A LENGTH OVER MANUFACTURER MODEL RIG ALL WEIGHT BEAM PRICE BLOCK I. 40 SLOOP 39 18,500 12 BUCCANEER 270 SLOOP 27 5,000 08 BUCCANEER 320 SLOOP 32 12,500 10 DTR> FOR A CON> MODIFY USING PRICE = DISP * 1.3 + 5000 DTR> PRINT A LENGTH OVER MANUFACTURER MODEL RIG ALL WEIGHT BEAM PRICE BLOCK I. 40 SLOOP 39 18,500 12 $29,050 BUCCANEER 270 SLOOP 27 5,000 08 $11,500 BUCCANEER 320 SLOOP 32 12,500 10 $21,250 DTR> The following example uses a variable to force an end to a FOR loop before all records in the record stream have been acted upon: DTR> READY YACHTS DTR> DECLARE A PIC 9. DTR> PRINT A A 0 DTR> SET NO PROMPT DTR> FOR YACHTS CON> BEGIN CON> A = A + 1 CON> PRINT A, BOAT CON> IF A = 5 THEN ABORT "END OF LOOP" CON> END LENGTH OVER A MANUFACTURER MODEL RIG ALL WEIGHT BEAM PRICE 1 ALBERG 37 MK II KETCH 37 20,000 12 $36,951 2 ALBIN 79 SLOOP 26 4,200 10 $17,900 3 ALBIN BALLAD SLOOP 30 7,276 10 $27,500 4 ALBIN VEGA SLOOP 27 5,070 08 $18,600 5 AMERICAN 26 SLOOP 26 4,000 08 $9,895 ABORT: END OF LOOP DTR> The following example contains a SORTED BY clause that allows the FOR loop to select records according to their length. The context variable X identifies the record stream in the FOR statement. DTR> READY YACHTS DTR> FOR FIRST 4 X IN YACHTS SORTED BY LOA CON> PRINT BUILDER, LOA LENGTH OVER MANUFACTURER ALL WINDPOWER 16 CAPE DORY 19 ENCHILADA 20 VENTURE 21 DTR> The following example uses nested FOR loops to increase by one year the age of each child in the first two records of the domain FAMILIES: DTR> READY FAMILIES MODIFY DTR> PRINT FIRST 2 FAMILIES NUMBER KID FATHER MOTHER KIDS NAME AGE JIM ANN 2 URSULA 7 RALPH 3 JIM LOUISE 5 ANNE 31 JIM 29 ELLEN 26 DAVID 24 ROBERT 16 DTR> SET NO PROMPT DTR> FOR FIRST 2 FAMILIES CON> FOR KIDS CON> MODIFY USING AGE = AGE + 1 DTR> PRINT FIRST 2 FAMILIES NUMBER KID FATHER MOTHER KIDS NAME AGE JIM ANN 2 URSULA 8 RALPH 4 JIM LOUISE 5 ANNE 32 JIM 30 ELLEN 27 DAVID 25 ROBERT 17