Somusar/SoProMach[tm]

User's Guide

Francesco Aliverti-Piuri

Copyright © 2003-2012 Somusar

Updated on: January 31, 2005

      
      
      
      
      
      
      
      
      
      
      
      
      
      

Copyright © 2003-2012 so.mus.ar. s.a.s.
Via Sangallo 30 - 20133 Milan - Italy
All rights reserved.

Unix is a registered trademark in the United States and other countries, licensed exclusively through X/Open Company Limited.

Linux is a registered trademark of Linus Torvalds in the United States and other countries.

Sun, Sun Microsystems, the Sun logo, Solaris, Java, and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.

Symbian and all Symbian-based marks and logos are trademarks of Symbian Software Limited.

Apple and Mac OS are registered trademarks of Apple Computer, Inc. in the United States and other countries.

Intel is a registered trademark of Intel Corporation in the United States and other countries.

PowerPC and CICS are registered trademarks of International Business Machines Corporation in the United States and other countries.

Microsoft, Windows, Visual Basic are either trademarks or registered trademarks of Microsoft Corp. in the United States and/or other countries.

Oracle is a registered trademark, and PL/SQL is a trademark of Oracle Corporation.

SAP and ABAP/4 are registered trademarks of SAP AG in Germany and several other countries.

PostScript is a registered trademark of Adobe Systems Incorporated in the United States and/or other countries.

So.mus.ar, the Somusar logo, Somusar/Software Production Technique, Somusar/Software Production Machine, Somusar/Sisendel, Somusar/Tefigel, Somusar/SoProTech, Somusar/SoProMach, Somusar/Software Entity, Somusar/Software Mold, Somusar/Software Mold Kit, Somusar/Software Mold Building, Somusar/Code Generator Building, Somusar/Generator Building, and Somusar/File Generation Scheme are trademarks of so.mus.ar. s.a.s. in Italy, in the European Union, in the United States of America and other countries.

Other trademarks or service marks referenced herein are property of their respective owners.


Contents
Chapter 1 - Introduction
Chapter 2 - Package Contents
Chapter 3 - Installing SoProMach
3.1 - Unpacking
3.2 - Configuring SoProMach
Chapter 4 - Verifying the Installation
Chapter 5 - Generating software with SoProMach
5.1 - Command-line interface
5.2 - Generating Software
5.2.1 - Generating Software Using Sisendel
5.2.2 - Generating Software Using Tefigel
Chapter 6 - SoProMach Models
Chapter 7 - Sisendel Messages
7.1 - Sisendel Error Messages
7.2 - Sisendel Warning Messages
Chapter 8 - Tefigel Messages
8.1 - Tefigel Error Messages
8.2 - Tefigel Warning Messages
8.2.1 - Tefigel Warning Messages During Tag File Processing
Chapter 9 - Contacting Somusar
9.1 - Requesting Support
Chapter 10 - Further Reading

Tables
Table 1 - SoProMach environment variables

Chapter 1 - Introduction

This document describes how to install and operate the Somusar/Software Production Machine[tm], independently of the underlying operating system and of the edition of SoProMach.

All Somusar's products are currently available for the following platforms:

The reader should be familiar with the following basic concepts and procedures:

Chapter 2 - Package Contents

SoProMach is delivered in tar/gzip (in short: tgz) format. Instructions on how to expand and install the software package are available in the next chapter .

The tgz file for each platform contains two executable files:

Note:

The two executable files for Windows® have the extension ".exe".

   
   

The technical documentation for SoProMach, Sisendel and Tefigel is publically available on line

The licensing agreement for SoProMach users is also available on line.

Chapter 3 - Installing SoProMach

3.1 - Unpacking

The SoProMach tgz file can be unpacked by means of utilities such as Winzip® or gunzip and gtar, available for practically all platforms (see http://www.gzip.org).

The installation of SoProMach does not require administrator (or root) privileges; however, a centralized installation may require such privileges in order to share the SoProMach package and the related environment variables.

The suggested unpack sequence is the following:

  1. Create a "somusar" directory (or folder) to host SoProMach; a suggested location is "/opt/somusar/bin" on Linux® and Mac OS® X, or "C:\opt\somusar\bin" on Windows® systems;

  2. Expand the contents of the tgz file under the "somusar/bin" directory.

3.2 - Configuring SoProMach

The following table describes the environment variables for SoProMach, specifying the user level that they have been designed for.

Table 1 - SoProMach environment variables

Variable Description User level
SOMUSAR Package installation directory System-wide SoProMach users
PATH Executable search path All system-wide SoProMach users
SISENDEL_MOLDS Mold kit to be applied by SoProMach Project group(s)
SISENDEL_TOOLKIT Set of Tefigel scripts used by one or more mold kits Project group(s)
SISENDEL_LIBRARY Set of reusable entities shared among two or more project groups Project group(s)
SISENDEL_PROJECT Set of entities that constitute a SoProTech project Project group

Chapter 4 - Verifying the Installation

Issuing the following command:

   prompt> sisendel -version
should produce an output message similar to the following:
   sisendel[tm]: version 070/community - 27Oct04 - www.somusar.com
   Copyright (c) 2002-2004 so.mus.ar. s.a.s. - All rights reserved.
Issuing the following command:
   prompt> tefigel -version
should produce an output message similar to the following:
   tefigel[tm]: version 103/community - 27Oct04 - www.somusar.com
   Copyright (c) 2002-2004 so.mus.ar. s.a.s. - All rights reserved.
In case of error message or different output message, or in case of no output message at all, the following check should be performed: Should the above check not solve the unexpected behavior of SoProMach, please report the problem to the Somusar support team at http://www.somusar.com/services/support.

Chapter 5 - Generating software with SoProMach

A set of proof-of-concept (POC) generators are freely available at http://www.somusar.com, and allow SoProMach users to familiarize with its software generation capabilities.

For training and consultancy please refer to http://www.somusar.com/services.

5.1 - Command-line interface

The command-line interface of SoProMach consists of two commands - the two executable programs - with options and parameters as follows:

5.2 - Generating Software

SoProMach can be used to generate software according to two main schemes:

Scheme 1:

entity-based software generation, fully described in "Somusar/Software Production Technique[tm]: An Introduction "; the language and corresponding processor for this scheme is Sisendel, but Tefigel also plays an important role as the language for the Software Molds;
Scheme 2:
generalized file-oriented software generation; the language and corresponding processor for this scheme is Tefigel.

5.2.1 - Generating Software Using Sisendel

A thorough discussion about the applicability of Sisendel falls outside the scope of this guide, and is given in "Somusar/Software Production Technique[tm]: An Introduction ", "Somusar/Sisendel[tm]: A Tutorial Introduction ", and "Somusar/Software Production Technique[tm]: A Sample Project ": for the purpose of this guide it is sufficient to say that Sisendel can be applied in any software project - from small to large, to very large - involving some degree of similarity in the software files related to the entities that constitute the software system under development.

In general, Sisendel can be applied whenever a software system can be described as a set of interrelated entities (or objects) distributed across two or more system layers, such as a database, a usage interface, and a business logic layer. In addition, Sisendel allows to automatically produce consistent and up-to-date documentation about the software system.

5.2.2 - Generating Software Using Tefigel

As described in detail in "Somusar/Tefigel[tm]: A Tutorial Introduction ", any text file can be considered a Tefigel "program": it is thus possible to apply the Tefigel processor to any text file, independently of the Sisendel processor, to generate software in practically any computer language source format.

Consequently, Tefigel can be applied as a generalized generation tool in any software project involving some degree of similarity at the source file level. Tefigel can read natively XML and CSV files as input models.

Chapter 6 - SoProMach Models

The software generation engine Somusar/Software Production Machine[tm] is available in three models:

  1. SoProMach[tm] Community: Free download
    for small projects with up to 15 software entities.

  2. SoProMach[tm] Workgroup:
    for departmental projects with up to 50 software entities.

  3. SoProMach[tm] Enterprise:
    for enterprise projects with up to 500 software entities.

Larger models of SoProMach can be built on request. Further information on this topic are provided via our contact page www.somusar.com/contact.

All Somusar's products are currently available for the following platforms:

Chapter 7 - Sisendel Messages

7.1 - Sisendel Error Messages

The following list describes all fatal errors of the Sisendel translator, that is, all error conditions that cause Sisendel to stop processing entities and terminate with an error condition. The official definition of the syntax and semantics of Sisendel is documented in "Somusar/Sisendel[tm]: Reference Guide ".

- ... are not allowed within section "..."

The specified Sisendel language construct cannot be used in the specified section.

- arrays of functions are not allowed

Sisendel does not allow to associate a cardinality with a field of type function; alternatively, it is possible to define an entity A containing only a function field, and define a field of another entity B to be an array of A entities.

- can't get current directory: ...

An attempt to retrieve the current working directory has failed. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation".

- checking NULL directory

Internal error. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation". Should this error condition appear again, please notify the Somusar support team as specified in http://www.somusar.com/services/support.

- comment "..." is too long (longer than 4096 characters)

The specified comment - resulting from the concatenation of the sequence of comment lines starting at the specified line - exceeds the maximum allowed length, which is currently 4096.

- complete collection of entity fields is too long

The full list of field identifiers yields a string exceeding the maximum allowed length. Should this error condition appear again, please notify the Somusar support team as specified in http://www.somusar.com/services/support.

- could not convert string "..." into number

The specified enumeration value definition does not contain a valid numeric value.

- creating dir. "..."

An attempt to create the specified directory has failed. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation".

- creating NULL directory

Internal error. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation". Should this error condition appear again, please notify the Somusar support team as specified in http://www.somusar.com/services/support.

- environment variable "..." not set

A value for the specified environment variable must be defined prior to starting the Sisendel translator.

- empty definition for field "..."

The definition for the specified field in section DEFS is empty.

- empty description

The specified field (or entity) description (or label) is an empty string.

- entity "..." multiply defined (files "..." and "...")

The same entity file prefix - i.e., the user-defined type id - is used more than once within the project tree, therefore the entity type is not unique.

- enumeration definition associated with field of type "..."

A definition of an enumeration field in section DEFS refers to a field whose type is not enum.

- enumeration symbol "..." used more than once

The definition of an enumeration field in section DEFS contains two identical, non-unique symbolic values.

- enumeration value ... ('...') used more than once

The definition of an enumeration field in section DEFS contains two identical, non-unique numeric or character values.

- exec... failed

An attempt to start the Tefigel processor has failed probably due to a system overload. A check of the system status is highly recommended.

- extension "..." in mold "...", layer "...", is reserved

The generatable file extension used in the specified mold is reserved by Sisendel and cannot be used for generatable files.

- failed to read range lower bound from "..."

The specified range definition in section DEFS contains a non-numeric value for the lower bound of the range field.

- failed to read range upper bound from "..."

The specified range definition in section DEFS contains a non-numeric value for the upper bound of the range field.

- field "..." not a member of collection "..."

The specified adjusting parameter in section ADJUST refers to a collection that does not contain the specified field.

- field "..." previously defined

Multiple definition of the specified field, that is, the same field identifier is used more than once.

- file "..." not part of library "..."

The specified entity file does not belong to the current Sisendel library, that is, it is not within the file-system subtree starting at directory SISENDEL_LIBRARY.

- file "..." not part of project "..."

The specified entity file does not belong to the current Sisendel project, that is, it is not within the file-system subtree starting at directory SISENDEL_PROJECT.

- fixed-size arrays of links are not allowed

Sisendel does not allow to define fixed-size arrays of links. A list of entities can be used instead.

- fork failed

An attempt to start the Tefigel processor has failed probably due to a system overload. A check of the system status is highly recommended.

- function definition associated with field of type "..."

A definition of a function field in section DEFS refers to a field whose type is not function.

- identifier "..." is too long

The specified identifier exceeds the maximum allowed length, which is currently 512 characters.

- illegal adjusting section "..."

The section identifier in the specified adjusting parameter does not correspond to any legal Sisendel section.

- illegal character '...' (0x...) in identifier "..."

Sisendel identifiers may only contain lower case letters, digits, and underscores _.

- illegal step 0 under "..."

The specified mold directory contains a generation step directory called "0": legal generation steps directories start from "1".

- imported fields must be of a basic type

The type of the source field for the specified imported field is not a basic type.

- imported fields of type "..." are not allowed

The type of the source field for the specified imported field cannot be used for imported fields.

- importing from a basic type is not allowed

The entity part of the source field for the specified imported field refers to a basic type instead of referring to an entity file.

- importing from within the same user type is not allowed

The entity part of the source field for the specified imported field refers to the same entity file defining the imported field.

- items collection "..." is empty

No fields have been listed as members for the specified collection.

- library entity dir. "..." and project dir. "..." are not separated

One of the directories specified as SISENDEL_PROJECT and SISENDEL_LIBRARY is currently a subtree of the other: these directories must be separated in order for Sisendel to distinguish library entities from project entities. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation".

- links to basic types are not allowed

The keyword link must be followed by a user type (i.e., an entity id).

- lists of basic types are not allowed

The keyword list must be followed by a user type (i.e., an entity id).

- lower bound of range "..." not smaller than the upper bound

The specified range definition in section DEFS is not in the form "lower-bound/upper-bound".

- missing/bad/too high ordinal number in mold "...", layer "..."

The mold ordinal number in the directory name of the specified mold does not correctly specify the mold position in the mold group sequence.

- missing cardinality for "string ..."

A cardinality definition for the specified string field must be supplied in the field definition.

- missing collection identifier before member list

No identifier has been specified before the specified collection.

- missing definition for "enum ..."

A definition for the specified enum field must be supplied in section DEFS.

- missing definition for "range ..."

A definition for the specified range field must be supplied in section DEFS.

- missing definition of range lower bound

The specified range definition in section DEFS is not in the form "lower-bound/upper-bound".

- missing description of entity

No entity id and label have been specified in section CORE.

- missing field reference before enumeration definition

The specified enum definition in section DEFS is not associated with any field: a field identifier must be specified before the specified line.

- missing field reference before function definition

The specified function definition in section DEFS is not associated with any field: a field identifier must be specified before the specified line.

- missing field reference before range definition

The specified range definition in section DEFS is not associated with any field: a field identifier must be specified before the specified line.

- missing section "..."

The specified entity file does not contain the specified mandatory section.

- missing signature for "function ..."

An interface definition (signature) for the specified function field must be supplied in section DEFS.

- missing step ... under "..."

The specified mold directory does not contain any generation step subdirectory for the specified step number (i.e., the generation step slot is empty).

- missing subdirectory for mold ... in layer "..."

The mold group for the specified layer does not contain any mold for the specified ordinal number (i.e., the mold group slot is empty).

- multiple definition for range field "..."

Section DEFS contains more than one definition for the specified range field.

- multiple definition of collection "..." within section "..."

The specified collection id is used more than once within the specified section.

- multiple definition of entity

The specified entity file contains more than one entity definition line in section CORE.

- multiple enumeration definitions for field "..."

Section DEFS contains more than one definition for the specified enum field.

- multiple reference to field "..." within collection "..."

The specified collection contains more than one reference to the specified field.

- multiple value definition for enumeration symbol "..."

Section DEFS contains more than one definition for the specified enum symbolic value.

- no field defined with id "..."

The specified line contains a reference to an invalid field identifier.

- no field defined with index ...

The specified line contains a reference to an invalid field.

- opening directory (...) "..."

An attempt to access the specified directory has failed. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation".

- opening entity directory "..."

An attempt to access the specified directory has failed. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation".

- opening mold directory "..."

An attempt to access the specified directory has failed. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation".

- ordinal number multiply used in mold "...", layer "..."

The ordinal number used in the name of the specified mold has already been used in the same mold group, therefore the mold group sequence is not properly defined.

- processed file contains no entity definition

Either the entity definition or the entity label is empty, or both are missing from the specified entity file.

- ran out of space

An attempt of the Sisendel processor to allocate memory has failed probably due to a system overload. A check of the system status is highly recommended.

- range definition associated with field of type "..."

The range definition in section DEFS refers to the a field of the specified type.

- reconversion of lower bound fails, value ... is probably too small

The number specified for the lower bound in the range definition in section DEFS cannot be converted without changes from/to string format; the value is probably too small (underflow).

- reconversion of upper bound fails, value ... is probably too big

The number specified for the upper bound in the range definition in section DEFS cannot be converted without changes from/to string format; the value is probably too large (overflow).

- removing dir. "..."

An attempt to remove the specified directory has failed. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation".

- removing NULL directory

Internal error. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation". Should this error condition appear again, please notify the Somusar support team as specified in http://www.somusar.com/services/support.

- section "..." multiply defined

The specified entity file contains more than once the specified section.

- section "..." must appear before section "..."

The correct section order for entity files is:
(CORE), DEFS, DB, LOGIC, UI, ADJUST.

- step ... under "..." defined more than once

More than one step subdirectory of the specified mold corresponds to the specified step, possibly due to different directory names that map to the same number (such as "1" and "01").

- syntax error >>...<<.

The specified line does not match any of the syntax rules specified by the Reference Guide of Sisendel: possible errors could be missing labels, tabs before or between collection members, upper case letters in identifiers, semicolon missing from collection labels, and several others. The syntax of Sisendel is defined in "Somusar/Sisendel[tm]: Reference Guide ".

- too many (max: 50) collections of items

The specified entity file exceeds the maximum level of collections (50).

- too many (max: 100) entity fields

The specified entity file exceeds the maximum number of entity fields (100).

- too many directories (max: 32) in input pathname "..."

The specified file pathname exceeds the maximum number of directory nesting (32).

- too many (max: 200) property adjustings

The specified entity file exceeds the maximum number of adjusting parameters (200).

- too many members (max: 200) for enumeration "..."

The specified enum field exceeds the maximum number of enumeration values (200).

- too many (max: ...) molds defined for layer "..."

The specified maximum number of molds has been exceeded. An upgrade to a higher edition of SoProMach is recommended.

- too many parameters (max: 100) for function "..."

The specified function field exceeds the maximum number of input parameters (100).

- too many signatures (max: 8) for function "..."

The specified function field exceeds the maximum number of function signatures (8).

- too many steps (max: 15) under "..."

The specified maximum number of file generation steps has been exceeded by the specified mold.

- too many user-defined types (max: ...)

The specified maximum number of entity files has been exceeded. An upgrade to a higher edition of SoProMach is recommended.

- undefined collection "..." for section "..."

The specified adjusting parameter of section ADJUST refers to a collection which is not defined in the specified section.

- undefined type "..."

The type of the specified field is neither a basic type, nor a user-defined type (entity file).

- unknown section id "..."

The specified section id is invalid. The correct section order for entity files is:
(CORE), DEFS, DB, LOGIC, UI, ADJUST.

- user type "..." has no field called "..."

The field part of the imported field type of the specified field does not correspond to a field of the referenced entity.

7.2 - Sisendel Warning Messages

The following list describes all warning messages issued by the Sisendel translator, that is, all error conditions that do not cause Sisendel to stop processing entities.

- cannot open molds directory "..."

The mold group for the specified layer cannot be found or accessed by the Sisendel translator; should this be intentionally so, due to project conventions, it is possible to turn off this warning by simply creating an empty directory for the specified layer under SISENDEL_MOLDS.

- enumeration description "..." used more than once

The label for the specified enum value in section DEFS has been already used within the same enumeration definition.

- ignoring unnecessary mold directory "..."

The mold kit directory SISENDEL_MOLDS contains a layer directory for the specified entity file section, that by Sisendel definition cannot contain any collection of fields, and is thus never searched by the Sisendel translator for molds to be applied to the input entity files.

- mold processing failed

The mold processing performed by the Tefigel processor has failed, probably due to a missing file or a mold error. The Tefigel error message should provide hints on the reason of the error.

Chapter 8 - Tefigel Messages

The following list describes all fatal errors of the Tefigel processor, that is, all error conditions that cause Tefigel to stop processing input commands and text, and terminate with an error condition. The official definition of the syntax and semantics of Tefigel is documented in "Somusar/Tefigel[tm]: Reference Guide ".

8.1 - Tefigel Error Messages

- Badly formed ...

The specified instruction contains one or more syntax errors, with respect to the syntax rules specified by document "Somusar/Tefigel[tm]: Reference Guide ": possible errors may be missing parentheses, missing terms, unexpected characters, unexpected terms, and similar errors.

- Badly formed embedded call "......"

The specified function call after the current callkey is syntactically incorrect.

- Could not jump to "...": label not found

The specified label could not be found in the specified file, thus the jump instruction could not be performed as requested.

- Could not ... to "...": seek error

The specified jump instruction to the specified label could not be performed due to a seek error. A possible reason for this error could be a change in the contents of, or in the access permissions to, the specified file.

- Divide by zero

The divisor of the DIV instruction at the specified line evaluated to zero, thus the result of the division would be undefined.

- Empty string for system command

The evaluation of the command line string for the system instruction yielded an empty string.

- "fseek" on "..." failed

An attempt to perform a file seek operation on the specified file failed. A possible reason for this error could be a change in the contents of, or in the access permissions to, the specified file.

- "ftell" on "..." failed

An attempt to perform a "file tell" operation on the specified file failed. A possible reason for this error could be a change in the contents of, or in the access permissions to, the specified file.

- Illegal first character for ... variable

The identifier of the specified variable in the specified command does not start with a letter or an underscore _ and is therefore illegal.

- Instruction ... is missing corresponding ...

The specified instruction can only be used in conjunction with the specified corresponding instruction.

- [internal] filters "..." and "..." have the same priority

Internal error. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation". Should this error condition appear again, please notify the Somusar support team as specified in http://www.somusar.com/services/support.

- [internal] excess slots in table "shortcut"

Internal error. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation". Should this error condition appear again, please notify the Somusar support team as specified in http://www.somusar.com/services/support.

- [internal] insufficient slots in table "shortcut"

Internal error. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation". Should this error condition appear again, please notify the Somusar support team as specified in http://www.somusar.com/services/support.

- [internal] need upper case code for macro "..."

Internal error. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation". Should this error condition appear again, please notify the Somusar support team as specified in http://www.somusar.com/services/support.

- [internal] undefined opcode for ...

Internal error. It is highly recommended to verify the SoProMach installation as specified in "Verifying the Installation". Should this error condition appear again, please notify the Somusar support team as specified in http://www.somusar.com/services/support.

- jumpconds on <stdin> are not allowed

The specified instruction cannot be performed when the Tefigel processor reads text and commands from the standard input.

- jumps on <stdin> are not allowed

The specified instruction cannot be performed when the Tefigel processor reads text and commands from the standard input.

- label "..." already used on line ...

The specified label is used more than once in the specified file, thus the JUMP destination is ambiguous.

- labels on <stdin> are not allowed

The specified instruction cannot be performed when the Tefigel processor reads text and commands from the standard input.

- Line too long (...+ bytes)

The specified logical input line - possibly a concatenation of two or more physical input lines - exceeds the specified internal maximum input buffer size (currently 16 KB).

- Missing assignment '=' on ... of "..."

The specified instruction does not contain the assignment operator =.

- Missing condition for jumpcond

The specified instruction contains no logical condition (i.e., no boolean comparison).

- Missing delimiter '=' for retvalue

The specified instruction does not contain the assignment operator =.

- Missing ... at end of file processing

The specified expected end clause instruction could not be found after all input lines of the specified file have been processed.

- Missing ')' on call

The parameter list to the specified call instruction is not properly terminated.

- Missing test operator (one of =#~><}{) in ... ...

The logical condition (that is, boolean comparison) does not contain any comparison operator.

- Non-logical destination "..." (=...) for ...

The target (or destination) variable of the specified boolean operation has been previously set to a value which is neither 0 nor 1, and thus not suitable for boolean computation.

- Non-numeric destination "..." (=...) for ...

The target (or destination) variable of the specified arithmetic operation has been previously set to a non-numeric value, and is thus not suitable for arithmetic computation.

- Non-numeric value (...) for ...

In the case of arithmetic operations, this message notifies that the second operand of the specified arithmetic operation has been previously set to a non-numeric value, and is thus not suitable for arithmetic computation.

In the case of exit instruction, this message notifies that a non-numeric value has been incorrectly provided as an exit value to be returned to the originating operating system process.

In the case of switch instruction, this message notifies that a non-numeric value has been incorrectly provided for the specified switch control variable.

- Opening file "..."

The specified file could not be opened due to the specified reason. This message can appear as either a warning or an error message, depending on the setting of the ON_MISSING_FILE switch control.

- Out of range value (...) for ... [...]

The new value supplied for the specified switch control variable falls outside the valid range for that variable.

- Ran out of memory

An attempt of the Tefigel processor to allocate memory has failed probably due to a system overload. A check of the system status is highly recommended.

- Substitution loop on "..."

An attempt to expand the contents of the specified variable resulted in a substitution loop, that is, the current value of the specified variable contains direct or indirect references to the very same variable.

- Too many filters

The specified maximum number (currently 16) of concurrently active filters has been exceeded.

- Too many arguments (more than ...) to call

The specified maximum number (currently 32) of parameters to a function call has been exceeded.

- Too many nested files

The specified maximum level of file nesting via process or call instructions has been exceeded. An upgrade to a higher edition of SoProMach is recommended.

- Too many nested ...s

The specified maximum level of nesting with respect to the specified instruction has been exceeded. An upgrade to a higher edition of SoProMach is recommended.

- Unbalanced ...

The specified instruction attempts to restore a previously saved value of the associated special character, but no more saved values are available for that special character.

- Undefined destination "..." for ...

The specified target (or destination) variable of the specified boolean or arithmetic operation is not set to a valid value for the specified operation.

- Unknown ... identifier "..."

The specified identifier is not valid in the context of the specified instruction as defined by document "Somusar/Tefigel[tm]: Reference Guide ".

8.2 - Tefigel Warning Messages

The following lists describe all warning messages issued by the Tefigel translator, that is, all error conditions that do not cause Tefigel to stop processing input commands and text.

- Already in comment section

A comment section opening delimiter was encountered while already in a comment section.

- Already in tefigel section

A tefigel section opening delimiter (tefigel) was encountered while already in a tefigel section.

- codefile is obsolete, use tefigel instead

Instruction codefile has been superseded by instruction tefigel.

- Compiling reg. exp. of test "...": ...

The internal compilation of the specified regular expression failed due to the specified error, thus the boolean comparison could not be performed.

- filter "..." is not associated with any reg. exp.

The request to deactivate the specified filter could not be fulfilled as the specified file is not an active filter.

- filter "...", reg. exp. "...": ...

The internal compilation of the specified regular expression failed due to the specified error, thus the requested filter activation could not be performed.

- filter "...", reg. exp. "...": save failed

The internal saving of the specified regular expression failed, thus the requested filter activation could not be performed.

- FMT_FLOAT requires two arguments

Wrong number of arguments provided to function fmt_float.

- FMT_INT requires two arguments

Wrong number of arguments provided to function fmt_int.

- FMT_STR requires two arguments

Wrong number of arguments provided to function fmt_str.

- globset of previously set variable "..."

An attempt to define the specified variable in the global name space has failed because the same variable identifier has already been used in one or more non-global name spaces. The specified instruction is performed as if it were a plain set instruction, thus the variable is set to the new value specified by the instruction.

- Ignoring extra arguments (more than 3) to REPLACE

Too many arguments provided to function replace.

- Illegal id. format "..."

The identifier of the specified variable either contains characters other than lower case letters, decimal digits, or underscores "_", or it does not start with a letter and is therefore illegal.

- "library ..." would override "...", ignoring it

An attempt has been made to specify a library path when another path is already active, but only one library path at a time can be active, to ensure that called or processed files can be uniquely identified.

- mark '...' for <instruction-1> already in use as mark for <instruction-2>

The new marker specified for <instruction-1> was already in use for <instruction-2>; depending on the type of <instruction-1> and <instruction-2>, subsequent input command lines starting with the new marker might be interpreted by the Tefigel processor as either <instruction-1> or <instruction-2> command lines.

- Missing identifier to create new list

No list identifier has been provided to function new_list.

- No argdelim set, can't perform shift

A shift instruction was attempted, but no argdelim is set, so it is not possible to shift the argument variables.

- Not in comment section

A comment section closing delimiter was encountered while not in a comment section.

- Not in tefigel section

A tefigel section closing delimiter (endtefigel) was encountered while not in a tefigel section.

- Opening file "..."

The specified file could not be opened due to the specified reason. This message can appear as either a warning or an error message, depending on the setting of the ON_MISSING_FILE switch control.

- Restoring reg. exp. "...": ...

An attempt to restore the specified regular expression failed, so that the associated filter - although correctly active - cannot be applied to the current output line.

- Truncating very long internal exec "..."

The specified internal exec is too long and will be truncated.

- Unknown output line count, returning 0

The Tefigel processor cannot compute the current output line number after a system instruction has been run while the output file was still the standard output.

- Unrecognized id. pattern "..."

The specified identifier pattern string is not included in the list provided in "Somusar/Tefigel[tm]: Reference Guide " and is therefore illegal.

8.2.1 - Tefigel Warning Messages During Tag File Processing

The following list describes all warning messages issued by the Tefigel translator when processing a tag file.

- Closing unbalanced tag end "..."

The specified tag node has not been closed before the end of the tag node that includes it as a subnode.

- Control character 0x... converted to blank

The specified non-textual character has been automatically converted to blank by Tefigel.

- Empty tag "..."

The specified tag is empty.

- Exceeded tag stack capacity

The maximum level of tag nesting has been exceeded. An upgrade to a higher edition of SoProMach is recommended.

- Expected TAG_START '<', found '...'

The specified unexpected character has been found where a "<" was expected.

- Missing TAG_END > at end of file

A tag appears to have not been properly closed before the end of file.

- Missing terminating ... quote sign at end of file

A string of text in quotes appears to have not been properly closed before the end of file.

- No open tags, unbalanced tag end "..."

The specified tag node has been closed, but there were no open tags at that stage.

- Tag file processing failed. Reason: ...

Tag file processing was not possible for the specified reason.

- Tag key/value pair too long, skipping it

A tag attribute/value pair string is too long, and will be ignored.

- Tag text too long (... characters), truncating it

The specified tag text is too long and will be truncated.

- Truncating very long tag id "..."

The specified tag id is too long and will be truncated.

- Truncating very long tag path

The current tag nesting path is too long and its conversion to a string will be truncated.

- Unbalanced tag end "..."

The specified tag node has been closed, but it had not been opened previously.

- Unbalanced TAG_END > ignored

A ">" tag end encountered outside a tag node will be ignored.

- Unbalanced TAG_START < ignored

A "<" tag start encountered inside a tag node will be ignored.

Chapter 9 - Contacting Somusar

To request any type of information concerning the SoProTech[tm] or the SoProMach[tm], please fill in the appropriate form at http://www.somusar.com/contact specifying, beside your question or questions, the requested contact data.

9.1 - Requesting Support

To request support for any problem concerning SoProMach, fill in form http://www.somusar.com/contact/problem_report, specifying, among other contact data, the following information:

Submitted support requests are immediately sent to the Somusar support service, and after validation of a support request a confirmation email is sent to the address of the Somusar licensee.

Chapter 10 - Further Reading

Additional information on the different aspects of the Somusar/Software Production Technique[tm] can be found in the other volumes of the Somusar/SoProTech[tm] Booklet Series, listed below.

Vol. I - somusar/SoProTech: An Introduction

An introduction to the Somusar/Software Production Technique[tm], a new, fast, and efficient technology to make high-quality multifacet software.

Vol. II - somusar/SoProTech: A Sample Project

Description of a sample project, serving as a proof-of-concept for the Somusar/Software Production Technique[tm], and the Somusar/Sisendel[tm] and Somusar/Tefigel[tm] languages. A few code examples are provided and demonstrate the practical applicability of the technique.

Vol. III - somusar/Sisendel: A Tutorial Introduction

A tutorial introduction to Somusar/Sisendel[tm], describing all features of the simple software entity design language. Several code examples practically demonstrate the conciseness and flexibility of the language.

Vol. IV - somusar/Tefigel: A Tutorial Introduction

An introduction to the syntax, semantics, and usage of Somusar/Tefigel[tm], including a vast set of code examples, illustrating the powerful features of the text file generation language.

Vol. V - somusar/Sisendel: Reference Guide

Sisendel reference guide: official definition of syntax and semantics of the Somusar/Sisendel[tm] language.

Vol. VI - somusar/Tefigel: Reference Guide

Tefigel reference guide: official definition of syntax and semantics of the Somusar/Tefigel[tm] language.

Vol. VIII - somusar/tjpp: User's Guide

The Somusar/tjpp[tm] User's Guide. How to install and operate the Java[tm] preprocessor.

Vol. IX - Code Generation Somusar Style

Proof-of-concept samples of what you can generate with Somusar/SoProMach[tm].