(!******************************************************* * Mosel Example Problems * * ====================== * * * * file readfile.mos * * ````````````````` * * Example for the use of the Mosel language * * (Read a data file) * * * * (c) 2008 Fair Isaac Corporation * * author: Y. Colombani, 2001 * *******************************************************!) model readfile parameters F="Data/datafile.dat" end-parameters declarations t1,t2:integer end-declarations fopen(F,F_INPUT) ! Open the file F for reading write("Reading file `",F,"'...") fskipline("#\n") ! Skip lines starting with a '#' and empty lines readln(t1,t2) ! Read the size of the table on a line declarations TF:array(1..t1,1..t2) of integer TD:array(string,string) of real S: set of string s1,s2:string end-declarations fskipline("#\n") ! Skip lines starting with a '#' and empty lines forall (i in 1..t1) do forall (j in 1..t2) read(TF(i,j)) ! Read t2 values readln ! on each line end-do fskipline("#\n") ! Skip lines starting with a '#' and empty lines repeat readln(s1,'|',s2,'|',TD(s1,s2)) ! Read the indices and the value on a line until getparam("nbread")<5 ! Until a line is not properly constructed fskipline("#\n") ! Skip lines starting with a '#' and empty lines read(s1) ! Read a string while (s1<>'.' and not iseof) do ! While the string is not '.' and the end of file ! is not reached S+={s1} ! Add the string to the set read(s1) ! Read another string end-do fclose(F_INPUT) writeln(" Done.\n") writeln("TF=",TF) writeln("TD=",TD) writeln("S =",S) end-model