|
|
|
|
||
|
DEFINITION MODULE MsgFile; (******************************************************************* Module MsgFile (DM_V2.2) Copyright (c) 1991-2006 by Andreas Fischlin and ETH Zurich. Purpose Retrieval of numbered textual messages from a text file. Remarks Typically an error number is associated with a particular message text and can be easily retrieved from a file for subsequent display. Each message must be stored on a single line and be written according to the following excerpt from such a message file: ... Reserved for Dialog Machine internal use: ======================================== - 0 , 0 : Not enough memory available! Δ - 1 , 0 : The computed value exceeds the INTEGER-range! ... The first number indicates the message number, the second the language of the message. Note that it is possible to have several message texts beeing associated with the same message number. This design allows to formulate the same meaning of a particular message in different languages. The languages English, German, French, Italian and a few custom definable languages are supported. Otherwise texts may be added freely into the file, e.g. to document reserved number ranges etc. More formally: EBNF (start symbol = messages): messages = {message|text}. message = ['-'] number ['-' number] ',' number [':'] text. number = digit {digit}. text = {character} EOL. EOL = 15C. Semantics: If a number range, e.g. 1 - 4, is present, the following text is used for all of the messages within the range. Implementation restriction: There is for each supported language a maximum of 300 messages available. For speed-up reasons, the file is opened and analyzed upon the retrieval of the very first message. The file remains open until another is opened or the module is quit. Hence do not attempt to access the message file from another program (e.g. an editor) while it is in use by a running client program. Programming o Design Andreas Fischlin 18/04/1991 o Implementation Andreas Fischlin 18/04/1991 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: 29/04/1991 AF *******************************************************************) CONST english = 0; german = 1; french = 2; italian = 3; myLanguage1 = 4; myLanguage2 = 5; undefMsgNr = -1; PROCEDURE SetMessageLanguage(l: INTEGER); (* Can be called inbetween calls to GetMessage to switch from one language to another. *) PROCEDURE SetAsMessageFile(fn: ARRAY OF CHAR; VAR done: BOOLEAN); (* Prepare message file with name fn. An eventually currently already open message file will first be closed before the new one is opened and analyzed for any of above languages. *) PROCEDURE GetMessage(msgnr: INTEGER; VAR msg: ARRAY OF CHAR); PROCEDURE GetNumberedMessage(msgnr: INTEGER; VAR msg: ARRAY OF CHAR); (* Retrieve message with number msgnr and the associated text msg in the currently set language. GetNumberedMessage inserts at the begin of msg the number msgnr followed by a ': ', GetMessage will omit such a number and retrieve only the text. *) END MsgFile.
|
||
|
|
|