Lezen van een TAB of CSV delimited file De rijen worden in een Data multidimensional property gezet gelijkaardig aan dat van %ResultSet De hoofding bepaald de labels in de Data maar deze kunnen dmv een vertaaltabel omgezet worde Als hoofding niet beschikbaar is dan wordt columnnr gebruikt, instellen dmv Do Reader.SetHeaderRow(O)) Codesnippet: Set reader=##class(TECH.FileReader).%New("c:\test.txt") Do reader.SetDelimiter($C(9)) ; optioneel, default is TAB Do reader.SetHeaderRow(1) ; optioneel, default = 1 Do reader.SetFirstDataRow(2) ; optioneel, default = 2 Do reader.SetTranslateHeader2UpperCase() ; optioneel, default=0 Do reader.AddHeaderTranslation(From, To, DataType) ; optioneel, 1 per translatie While reader.Next() { Set x=reader.Data("HeaderName") Set y=reader.Column(1) } Voor debugging zijn er volgende 2 methods maar eerst min. eenmaal reader.Next() uitvoeren Do reader.DumpHeader() Do reader.DumpRow() 1 %RegisteredObject 0 %String 1 1 %String 2 1 %FileCharacterStream 1 %String " " 1 %Boolean 1 %String 0 1 %String 1 FileHeader to TranslateHeader %String 1 1 ColumnNr to FileHeader %String 1 1 %String 1 %String 1 %Integer 1 %Boolean 1 %Boolean 1 1 D ##class(TECH.FileReader).%New().test() FilePath,Delimiter %Status controle of de end of file bereikt is %Boolean ophalen van de volgende lijn en deze plaatsen in de cache %Boolean aantal kolommen %Integer ophalen van de kolomnaam via de kolomnr ColumnNr:%Integer %String ColumnNr:%Integer %String ophalen van de kolomnaam via de kolomnr ColumnNr:%Integer %String ophalen van een waarde via de kolomnr ColumnNr:%Integer %String ophalen van een waarde via de headername HeaderName:%String %String 1 1 aantal reeds ingelezen rijen 1 %Boolean 1 1 Inlezen volgend delimited element rekening houden met CSVEscaping %String Debugging naar std output Debugging naar std output 1 1 1 1 conversie van de gevonden kolomnamen in de header naar uppercase default worden de gevonden kolomnamen onveranderd gebruikt Per default worden lege lijnen overgeslagen. Een reeds geopende stream gebruiken in de FileReader Stream:%FileCharacterStream instellen van de delimiter (default = TAB) Delimiter:%String Instellen van het CSV escape karakter, default is dit " double quote CSV escaping wordt niet toegepast voor TAB-delimited bestanden Char Als de header in het delimited tekstbestand incorrect is kan je deze veranderen. Indien het delimeted tekstbestand geen header heeft dan kan je via de kolom volgnrs een TranslatedHeaderName toevoegen Tevens kan je via het DataType getallen,datum en tijd automatisch converteren naar intern cache formaat HeaderNameInFile,TranslatedHeaderName,DataType Instellen van het rijnr waarop de header terug te vinden is RowNr Instellen van het rijnr waarop de eerste datarij terug te vinden is RowNr ..FirstDataRowNr ..HeaderRowNr=..FirstDataRowNr-1 ]]>