Wurde höchstwahrscheinlich über eine Hilfsdatei mit ausschließlich Alpha-Feldern gelöst.

Andere Lösung:
Wir haben eine Funktion csvRead geschrieben, die nach jeder Zeile eine Prozedur oder ein Programm aufruft (Callback) und dieser eine Feldgruppe mit bis zu 999 Elementen zu je bis zu 1.024 varchar übergibt.
Zuvor ruft man csvInfo auf, das einem die Anzahl der Zeilen und Spalten usw. liefert. So kann man sein Programm vor falschen Dateien schützen.
PHP-Code:
C                   EVAL      csvInfoDS csvInfo(#IFSFile) 
C                   IF        csvInfoDS.cols <> 17 
C
FehlermeldungDatei hat falsche Spaltenanzahl
C                   
ENDIF
...
C                   CALLP     csvRead(#IFSFile:  
C                                     %PADDR(Zeile):           Adresse der Zeilen-Prozedur
C                                     
*BLANK:                  alternativ Programmname 
C                                     csvInfoDS
)               DS mit Infos über das csv-file 
"Zeile" ist der Name einer Prozedur im selben Programm. Sie wird für jede Zeile der csv-Datei aufgerufen. Die hat so auszusehen:
PHP-Code:
P Zeile           B                                                                            
D                 PI                                                                           
D csvInfoDS                           LIKEDS
(csvInfoDS_T) CONST            Info über csv-file  
D row                           10U 0                     
CONST            aktuelle Zeilen-Nr  
D csvval                      1024    VARYING DIM
(999)    CONST            Spalten-Werte
...
C                   EVAL      myFeldA csvval(1
C                   EVAL      myFeldB csvval(2
...
P                 E 
So muss man sich über das Thema "csv" nur einmal den Kopf zerbrechen und kommt ohne Hilfsdatei aus und schränkt den anwendenden Programmierer nicht ein.

Hier kann man sich jedes einzelnen Feldinhaltes natürlich liebevollst annehmen und so fehlertolerant sein, wie man möchte.

Obwohl die Datei zweimal byteweise von vorn bis hinten durchgelesen wird (1x für csvInfo und 1x für csvRead), performt das sehr gut.