DEFINITION MODULE LgMatIO;
(*******************************************************************
Module LgMatIO (Version 1.0)
Copyright (c) 1998-2006 by Dimitrios Gyalistras and ETH Zurich.
Purpose File input/output of double precision matrix objects
(large matrices, more than 4k x 4k elements).
Remarks This module is part of the package LgMatrices.
Programming
o Design
Dimitrios Gyalistras 23/07/1998
o Implementation
Dimitrios Gyalistras 23/07/1998
ETH Zurich
Systems Ecology
CHN E 35.1
Universitaetstrasse 16
8092 Zurich
SWITZERLAND
URLs:
<mailto:RAMSES@env.ethz.ch>
<http://www.sysecol.ethz.ch>
<http://www.sysecol.ethz.ch/SimSoftware/RAMSES>
Last revision of definition: 24/05/2002 AF
*******************************************************************)
FROM DMFiles IMPORT TextFile;
IMPORT Errors;
FROM LgMatrices IMPORT LMatrix;
(**************************************)
(*##### General Declarations #####*)
(**************************************)
CONST (* result codes returned *)
allOk = Errors.allOk;
notDone = Errors.onlyAnInsert;
TYPE
ProgressReportP = PROCEDURE();
AtReadDataPointP = PROCEDURE( INTEGER, (* the row read *)
INTEGER, (* the colum read *)
VAR LONGREAL, (* the data point read *)
VAR ARRAY OF CHAR (* error text passed on by client *)
): BOOLEAN; (* if false, reading stops *)
(*********************)
(*##### I/O #####*)
(*********************)
PROCEDURE ReadMatrix( inFName : ARRAY OF CHAR;
tryOpenFile : BOOLEAN;
keepFileOpen : BOOLEAN;
readTransposed : BOOLEAN;
VAR mat : LMatrix;
VAR eof : BOOLEAN;
VAR resCode : INTEGER;
VAR errTxt : ARRAY OF CHAR );
PROCEDURE WriteMatrix( VAR outF : TextFile;
mat : LMatrix;
wrTransposed : BOOLEAN;
VAR resCode : INTEGER;
VAR errTxt : ARRAY OF CHAR );
(***********************************)
(*##### Control of output #####*)
(***********************************)
PROCEDURE SetOutputRows( frstRow, lastRow: INTEGER );
PROCEDURE GetOutputRows( VAR frstRow, lastRow: INTEGER );
PROCEDURE SetOutputColumns( frstCol, lastCol: INTEGER );
PROCEDURE GetOutputColumns( VAR frstCol, lastCol: INTEGER );
PROCEDURE SetMatrixOutputParams( noDataStr : ARRAY OF CHAR;
sciFormat : BOOLEAN; (* if TRUE use scientific format, e.g. -1.23E+04 *)
nOutChars : INTEGER; (* number of characters per number *)
nDecDigits : INTEGER ); (* number of decimal digits *)
PROCEDURE GetMatrixOutputParams( VAR noDataStr : ARRAY OF CHAR;
VAR sciFormat : BOOLEAN;
VAR nOutChars : INTEGER;
VAR nDecDigits : INTEGER );
TYPE
OutputDataType = ( longReal, longInt );
PROCEDURE SetColOutputDataType( colNr : INTEGER;
dataType : OutputDataType );
PROCEDURE ColOutputDataType( colNr : INTEGER ): OutputDataType;
(**********************************)
(*##### Run-time control #####*)
(**********************************)
PROCEDURE InstallProgressReportP ( prp : ProgressReportP );
PROCEDURE InstallAtReadDataPointP( ardp : AtReadDataPointP );
END LgMatIO.