Using Standalone Rowsets to Read a File

The following code shows an example of reading in a file and inserting the rows into the database:

Local File &MYFILE; 
Local Rowset &rsBusExp, &rsBusExpPer, &rsBusExpDtl; 
Local Record &rBusExp, &rBusExpPer, &rBusExpDtl; 
Local SQL &SQL1; 
&rBusExp = CreateRecord(Record.PERSONAL_DATA); 
&rBusExpPer = CreateRecord(Record.BUS_EXPENSE_PER); 
&rBusExpDtl = CreateRecord(Record.BUS_EXPENSE_DTL); 
&rsBusExp = CreateRowset(Record.PERSONAL_DATA, 
CreateRowset(Record.BUS_EXPENSE_PER, 
CreateRowset(Record.BUS_EXPENSE_DTL))); 
&MYFILE = GetFile("c:\temp\BUS_EXP.out", "R", "UTF8", %FilePath_Absolute); 
&MYFILE.SetFileLayout(FileLayout.BUS_EXP_OUT); 
&SQL1 = CreateSQL("%Insert(:1)"); 
&rsBusExp = &MYFILE.ReadRowset(); 
While &rsBusExp <> Null; 
   &rsBusExp.GetRow(1).PERSONAL_DATA.CopyFieldsTo(&rBusExp); 
   &rsBusExpPer = &rsBusExp.GetRow(1).GetRowset(1); 
   For &I = 1 To &rsBusExpPer.ActiveRowCount 
      &rsBusExpPer(&I).BUS_EXPENSE_PER.CopyFieldsTo(&rBusExpPer); 
      &rBusExpPer.ExecuteEdits(%Edit_Required); 
      If &rBusExpPer.IsEditError Then 
         For &K = 1 To &rBusExpPer.FieldCount 
            &MYFIELD = &rBusExpPer.GetField(&K); 
            If &MYFIELD.EditError Then 
               &MSGNUM = &MYFIELD.MessageNumber; 
               &MSGSET = &MYFIELD.MessageSetNumber; 
            End-If; 
         End-For; 
      Else 
         &SQL1.Execute(&rBusExpPer); 
         &rsBusExpDtl = &rsBusExpPer.GetRow(&I).GetRowset(1); 
         For &J = 1 To &rsBusExpDtl.ActiveRowCount 
            &rsBusExpDtl(&J).BUS_EXPENSE_DTL.CopyFieldsTo(&rBusExpDtl); 
            &rBusExpDtl.ExecuteEdits(%Edit_Required); 
            If &rBusExpDtl.IsEditError Then 
               For &K = 1 To &rBusExpDtl.FieldCount 
                  &MYFIELD = &rBusExpDtl.GetField(&K); 
                  If &MYFIELD.EditError Then 
                     &MSGNUM = &MYFIELD.MessageNumber; 
                     &MSGSET = &MYFIELD.MessageSetNumber; 
                  End-If; 
               End-For; 
            Else 
               &SQL1.Execute(&rBusExpDtl); 
            End-If; 
         End-For; 
      End-If; 
   End-For; 
   &rsBusExp = &MYFILE.ReadRowset(); 
End-While; 
&MYFILE.Close();