Ada - case/switch invalid token

Viewed 128

I am trying to read from a file line by line using a code at the beginning of the line as a condition for a case statement to determine which operation to perform with the rest of the data in the same line.

The file text is as follows:

IL  Sales   Mary    Sales_person    1378    25.46
IL  Sales   Mary    Sales_person    1364    20.13
IR  Sales   Vallerie    Manager 1358    27.15
IL  Media   Marty   Manager 1444    25.17
IR  Media   Bob spokesperson    1416    10.13
IL  Crew    Sally   Pilot   675 35.11
IR  Media   David   Designer    1412    20.76
DL  Media               
DR  Media               
PA                  
PD  Media               
DD  Sales               
PD  Sales

I have the codes (IL, IR, DL, DR, PA, PD, DD) as enumeration types here:

type CodeType is(IL, IR, DL, DR, PA, PD, DD);
   package CodeTypeIO is new Ada.Text_IO.Enumeration_IO(CodeType);
   use CodeTypeIO;

My case/switch is as follows:

Open(File => fileIn, Mode => In_File, Name => "input.txt");
   Create(File => fileOut, Mode => Out_File, Name => "output.txt");

   loop
      get(fileIn, code);

      case code is
         when IL =>
            get(fileIn, deptIn);
            get(fileIn, eNameIn);
            get(fileIn, titleIn);
            get(fileIn, IDIn);
            FloatIO.get(fileIn, payrateIn);

            inLeftNode(deptIn, eNameIn, titleIn, IDIn, payrateIn);

         when IR =>
            get(fileIn, deptIn);
            get(fileIn, eNameIn);
            get(fileIn, titleIn);
            get(fileIn, IDIn);
            FloatIO.get(fileIn, payrateIn);

            inRightNode(deptIn, eNameIn, titleIn, IDIn, payrateIn);

         when DL =>
            get(fileIn, deptIn);
            get(fileIn, eNameIn);
            get(fileIn, titleIn);
            get(fileIn, IDIn);
            FloatIO.get(fileIn, payrateIn);

            inRightNode(deptIn, eNameIn, titleIn, IDIn, payrateIn);

         when DR =>
            get(fileIn, deptIn);
            get(fileIn, eNameIn);
            get(fileIn, titleIn);
            get(fileIn, IDIn);
            FloatIO.get(fileIn, payrateIn);

            inRightNode(deptIn, eNameIn, titleIn, IDIn, payrateIn);

         when PA =>
            get(fileIn, deptIn);
            get(fileIn, eNameIn);
            get(fileIn, titleIn);
            get(fileIn, IDIn);
            FloatIO.get(fileIn, payrateIn);

            inRightNode(deptIn, eNameIn, titleIn, IDIn, payrateIn);

         when PD =>
            get(fileIn, deptIn);
            get(fileIn, eNameIn);
            get(fileIn, titleIn);
            get(fileIn, IDIn);
            FloatIO.get(fileIn, payrateIn);

            inRightNode(deptIn, eNameIn, titleIn, IDIn, payrateIn);

         when DD =>
            get(fileIn, deptIn);
            get(fileIn, eNameIn);
            get(fileIn, titleIn);
            get(fileIn, IDIn);
            FloatIO.get(fileIn, payrateIn);

            inRightNode(deptIn, eNameIn, titleIn, IDIn, payrateIn);
      end case;
      end loop;

I am getting an "invalid token" error at every "when 'whatever code' ->" line. I've tried a few adjustments and googled about invalid tokens but haven't found quite what I'm looking for to fix my issue.

Errors were corrected by changing all " -> " to " =>" and changing "get(fileIn, line);" & "case line is" to "get(fileIn, code);" & "case code is".

The corrections are reflected in the sample code above.

0 Answers
Related