Podkomenda COLUMN (komenda REREAD)
COLUMN określa początkową kolumnę dla komendy REREAD , która ma odczytywać dane. Wartością domyślną jest kolumna 1. Dla kolumny można określić wyrażenie liczbowe.
Określanie wyrażenia liczbowego dla kolumny
INPUT PROGRAM.
DATA LIST /KIND 10-14 (A).
COMPUTE #COL=1.
IF (KIND EQ 'CHEVY') #COL=13.
DO IF (KIND EQ 'CHEVY' OR KIND EQ 'FORD').
REREAD COLUMN #COL.
DATA LIST /PRICE 3-6 (DOLLAR,2) QUANTITY 7-9.
END CASE.
END IF.
END INPUT PROGRAM.
BEGIN DATA
111295100FORD CHAPMAN AUTO SALES
121199005VW MIDWEST VOLKSWAGEN SALES
11 395025FORD BETTER USED CARS
11 CHEVY 195005 HUFFMAN SALES & SERVICE
11 VW 595020 MIDWEST VOLKSWAGEN SALES
11 CHEVY 295015 SAM'S AUTO REPAIR
12 CHEVY 210 20 LONGFELLOW CHEVROLET
9555032 VW HYDE PARK IMPORTS
END DATA.
LIST.
- Zadanie w tym przykładzie polega na odczycie CENA i ILOŚĆ tylko dla Chevroleta i Fordów. Tworzona jest nowa zmienna wskazująca początkowe pozycje kolumn dla CENA i ILOŚĆ, a pojedyncza komenda
DATA LISTsłuży do odczytywania danych dla obu typów automobilów. - Zmienna robocza #COL jest ustawiona na wartość 13 dla Chevroleta i 1 dla wszystkich innych samochodów. W przypadku opcji Fords dane zaczynają się w kolumnie 1. Zmienna CENA jest odczytywaana z kolumn 3-6, a ILOŚĆ jest odczytywaana z kolumn 7-9. Gdy rekord jest Chevrolet, dane zaczynają się w kolumnie 13. Zmienna CENA jest odczytywaana z kolumn 15-18 (15 to 3, 16 to 4, i tak dalej), a ILOŚĆ jest odczytywaana z kolumn 19-21.
Odczytywanie danych wejściowych FIXED i LIST z REREAD
INPUT PROGRAM.
DATA LIST NOTABLE FIXED/ A 1-14(A). /*Read the FIXED portion
REREAD COLUMN = 15.
DATA LIST LIST/ X Y Z. /*Read the LIST portion
END INPUT PROGRAM.
* The value 1 on the first record is in column 15.
BEGIN DATA
FIRST RECORD 1 2 3 -1 -2 -3
NUMBER 2 4 5
THE THIRD 6 7 8
#4
FIFTH AND LAST9 10 11
END DATA.
LIST.
- Kolumny 1-14 są odczytyane w formacie
FIXED. NastępnieREREADresetuje wskaźnik do kolumny 15. W ten sposób, począwszy od kolumny 15, wartości są odczytyane w formacieLIST. - Drugi parametr
DATA LISTokreśla tylko trzy zmienne. W związku z tym wartości -1, -2 i -3 w pierwszym rekordzie nie są odczytywanie. - Program generuje ostrzeżenie dla brakującej wartości w rekordzie 2 i drugie ostrzeżenie dla trzech brakujących wartości w rekordzie 4.
- W piątym i ostatnim rekordzie nie ma ogranicznika między wartością LAST a wartością 9. Program
REREADnadal może odczytać format 9 w formacieLIST.