Navigation: Language Reference > 13 - Built-in Functions >====== SKIP (bypass records in sequence) ====== | |
SKIP( entity, count )
SKIP | Bypasses records during sequential processing. |
entity | The label of a FILE or VIEW declaration. |
count | A numeric constant or variable. The count specifies the number of records to bypass. If the value is positive, records are skipped in forward (NEXT) sequence; if count is negative, records are skipped in reverse (PREVIOUS) sequence. |
The SKIP statement is used to bypass records during sequential processing. It bypasses records, in the sequence specified by the SET statement, by moving the file pointer count records. SKIP is more efficient than NEXT or PREVIOUS for skipping past records because it does not move records into the RECORD structure data buffer. If SKIP reads past the end or beginning of file, the EOF( ) and BOF( ) procedures return true. If no SET has been issued, SKIP posts error 33 (Record Not Available).
Errors Posted:
33 | Record Not Available |
37 | File Not Open |
Example:
ViewOrder VIEW(Customer) !Declare VIEW structure
PROJECT(Cus:AcctNumber,Cus:Name)
JOIN(Hea:AcctKey,Cus:AcctNumber) !Join Header file
PROJECT(Hea:OrderNumber)
JOIN(Dtl:OrderKey,Hea:OrderNumber) !Join Detail file
PROJECT(Det:Item,Det:Quantity)
JOIN(Pro:ItemKey,Dtl:Item) !Join Product file
PROJECT(Pro:Description,Pro:Price)
END
END
END
END
SavOrderNo LONG
CODE
OPEN(Customer,22h)
OPEN((Header,22h)
OPEN(Detail,22h)
OPEN(Product,22h)
SET(Cus:AcctKey)
OPEN(ViewOrder) !Top of file in keyed sequence
LOOP !Process all records
NEXT(ViewOrder) !Get a record
IF ERRORCODE() THEN BREAK END
IF Hea:OrderNumber <;> SavOrderNo !Check for first item in order
IF Hea:OrderStatus = 'Cancel' !Is it a canceled order?
SKIP(Items,Vew:ItemCount-1) !SKIP rest of the items
CYCLE !and process next order
END !end ifs
END !end ifs
DO ItemProcess !process the item
SavInvNo = Hea:OrderNUmber !save the invoice number
END !End loop
See Also: