FMS includes special features for handling fatal error conditions. These errors result from illegal requests for system services, illegal parameters specified on subroutine calls, and data errors.

System service errors usually result from requests for hardware that is unavailable. Examples include attempting to open a file that exceeds available disk space, transferring data to an illegal address, or requesting more memory than is currently available. The IOSTAT parameter, which is printed as part of the error message, contains the returned status for system errors.

FMS checks the actual parameters specified on subroutine calls for possible error conditions. Examples include inconsistent matrix symmetry or data type, files that contain matrices or vectors that are not at the appropriate stage of the solution process for the requested function, or array dimension errors. FMS prints the values of the actual parameters, including the file attribute lists for specified files. The addresses of the actual parameters are also printed, which can be examined to determine if input and output files are the same.

Data errors include bad pivot values during the factoring process and attempts to store matrix data outside the specified profile. FMS prints the appropriate equation numbers and data values when these errors occur.

The FMS Error Parameters control the action taken by FMS when fatal errors occur. If IERROR=0 (default), FMS prints the error message and stops execution. This is the recommended procedure for handling FMS fatal errors. All error messages are written to unit LUERR. The amount of printed output is controlled by IPRERR. The default value includes the error message and traceback, which is sufficient for production applications.

If the IERROR parameter is set to 1, FMS returns to your program when the error is detected. In general, the calculation requested will be incomplete. If you elect to handle FMS errors by specifying IERROR=1, the NERROR parameter must be examined after each call to determine if a fatal error occurred.

The following are the error condition codes that are stored in NERROR:

FMS Error Messages
NERROR Description
0 FMS$ERR_: NO ERROR
No error occurred.
1 FMS$ERR_LICENSE: SOFTWARE LICENSE VIOLATION
The copy of FMS used in the program is not currently licensed to operate on this machine.
2 FMS$ERR_PROFILE: ERROR ON PROFILE VECTOR
The profile vector terms, LOWEQ(I), must be in the range 0<LOWEQ(I)<=I. The error message includes the equation number and the profile value LOWEQ(I). For further debugging, the entire profile vector can be printed during initialization by including 64 in the print code IPRI.
3 FMS$ERR_SYSTEM: ERROR IN SYSTEM ROUTINE
FMS has generated an error when requesting a system service. These errors usually result from file or memory management. The error message is processor dependent.
4 FMS$ERR_FILENAME: ILLEGAL FILE NAME
The specified file name has an illegal number of characters. The error message includes the file name and its length. Valid file names can contain from 1 through 119 characters.
5 FMS$ERR_CREATE: ERROR CREATING FILE
The requested disk file cannot be created. The error message includes the file name, record length, and number of records. If IOSTAT=0, FMS has determined that the file does not fit on the available disk space. If IOSTAT is not 0, refer to the appropriate operating system manual for your processor to determine the cause of failure. If the message "MAXIMUM NUMBER OF FMS UNITS EXCEEDED" appears, you have exceeded the number of FMS files which may be concurrently opened. You should check the subroutine call report to determine if a file is being opened in a loop without being closed.

This error typically occurs on UNIX systems if there are old files left in the directories. You should clean out all directories pointed to by the links to FMSDISKijk before the run (unless permanent file storage is used).

This error can also occur if the directories requested do not exist. This is especially true if the FMS file striping system is being used.

6 FMS$ERR_OPEN: ERROR OPENING FILE
The requested disk file cannot be opened. The error message includes the file name, record length, and number of records. Examine the value of IOSTAT, and refer to the appropriate operating system manual for your processor to determine the cause of failure.
7 FMS$ERR_WRITE: ERROR WRITING TO FILE
The requested data cannot be transferred to the disk file. The error message includes the FMS file number, the starting disk address in words, the starting memory address in words, and the number of words to transfer. The disk address must be one or greater. The number of words to transfer must be one or greater. For some files, the disk address must start on a record boundary. The requested transfer must not exceed the allocated disk space and must be within the range of allocated memory. This error can be caused by using the incorrect disk address increment. You should verify that the disk addresses are being incremented according to the following table:
FILE TYPE FILE NUMBER RECORD LENGTH
vector file LUX(1) LUX(4)
submatrix matrix file LUS(1) LUS(3)
submatrix integer file LUS(2) LUS(4)
submatrix vector file LUS(8) LUS(25)
NOTE: Fixed length submatrix files only, LUS(7) = 0.

If the information in the error message does not indicate a problem, examine IOSTAT and refer to the appropriate operating system manual. Possible system errors include the device becoming unavailable (taken off-line) during the run.

8 FMS$ERR_READ: ERROR READING FROM FILE
The requested data cannot be transferred from the disk file. The error message and recommended action is the same as error 7, writing to file.
9 FMS$ERR_WAIT: ERROR WAITING FOR I/O TO COMPLETE
Examine the IOSTAT parameter and refer to the appropriate operating system manual for your processor to determine the cause of failure. If the problem cannot be resolved, synchronous I/O can be forced by setting the FMS Parameter IOSYNC=1.
10 FMS$ERR_EXIST: EXISTING FILE HAS WRONG ATTRIBUTES
You have requested FMS to use an existing file by setting the FMS parameter IEXIST to 1. An existing file having the same name, record length and size could not be found. This problem can be corrected by deleting the old file, selecting a different name for the new file, or changing the problem size, so the new file matches the existing file.
11 FMS$ERR_ALIGN: DATA DOES NOT START ON AN APPROPRIATE ADDRESS
FMS requires memory resident arrays, passed as actual parameters on subroutine calls, to start on appropriate address boundaries. The error message printed by FMS includes the appropriate action to be taken for the particular machine on which the error was generated. This error typically occurs when integer variables are specified for real or complex arrays or the number of actual parameters is less than the number required by the subroutine being called. If you specify dummy arguments for options you are not using, the dummy arguments must be of the appropriate data type and be properly aligned.
12 FMS$ERR_ARRAY: ARRAY DIMENSION ERROR
FMS checks the dimensions of arrays passed as actual parameters. The error message includes the starting array address, number of dimensions, and the values of each dimension. Refer to the individual subroutine descriptions for limitations on array dimensions.
13 FMS$ERR_CLOSE: ERROR CLOSING FILE
Examine the IOSTAT Parameter and refer to the appropriate operating system manual to determine the cause of failure.
14 FMS$ERR_DELETE: ERROR DELETING FILE
Examine the IOSTAT Parameter and refer to the appropriate operating system manual for your processor to determine the cause of failure. The FMS error message lists the file name and the FMS file number.
15 FMS$ERR_MEMORY: INSUFFICIENT MAIN MEMORY FOR REQUESTED PROBLEM
FMS uses the largest contiguous memory region available. This error occurs when the available memory region is insufficient for minimum FMS requirements. The error message includes the first available memory location, the highest memory location that could be allocated, the length of memory available, and the amount of memory required. If incore files were selected, try setting INCORE=0 (default) to use disk files. If the matrix segment size LENSDF or block size NEQBIO was specified, try letting FMS determine them.
16 NOT USED
17 FMS$ERR_MVDIF: SPECIFIED MATRIX AND VECTOR FILES ARE INCONSISTENT
The data type or number of equations specified for the matrix and vector files are different. Check the matrix and vector file attribute lists printed by FMS to determine the inconsistency.
18 FMS$ERR_MMDIF: INPUT AND OUTPUT MATRIX FILES ARE INCONSISTENT
The record length, number of records, number of equations, diagonal length, matrix data length, data type, symmetry, or file location are different for the input and output matrix during factoring. Check the matrix file attribute lists printed by FMS to determine the inconsistency. This error is only generated during factoring when the matrix factors are not overlaid on the original matrix. Note that FMS requires the file location for both matrix files to be the same, incore, or on disk.
19 FMS$ERR_VVDIF: INPUT AND OUTPUT VECTOR FILES ARE INCONSISTENT
The number of equations, vector length, or data type are different for the two specified vector files. Check the vector file attribute lists printed by FMS to determine the inconsistency.
20 FMS$ERR_POSDEF: NEGATIVE PIVOT DURING FACTORING FOR EQUATION number
FMS has computed a negative pivot during factoring and the FMS positive definite flag, MPOSDF, was set to halt on negative pivots. This error message includes the equation number, the original matrix diagonal, the inner product sum, and the resulting pivot. This message usually indicates an error in the model, which results in bad matrix data being generated.
21 FMS$ERR_NOWORK: NO WORK SPECIFIED
The actual parameters passed to FMS indicate that no work was requested. This can result from specifying all zero values for MDATAU, NUMAI, NUMSF and calling the assemble or assemble-factor subroutine. This message also results if you attempt to perform a vector operation and specify zero vectors.
22 FMS$ERR_UNFAC: ATTEMPT TO SOLVE WITH AN UNFACTORED MATRIX
The matrix file attribute, NEWSEG, is less than or equal to the number of matrix segments, NUMSEG. This condition indicates that the matrix was not completely factored. Review the output from the factoring subroutine to determine if factoring was complete. Check the specified matrix file attribute for possible coding errors.
23 FMS$ERR_UNRED: ATTEMPT TO SKIP REDUCTION WITH UNREDUCED VECTORS
Subroutine RSDS, RNDS, CHDS, CSDS, or CNDS was called with the formal parameter ISKIP=1. The vector file status on the specified input vector file, IVSTAT, indicates that the vectors have not been reduced. Check to determine if the appropriate value of ISKIP was specified on the solution subroutine and that the appropriate vector files were specified. If forward reduction is to be skipped during solution, check the call to the factoring subroutine to determine if it was performed.
24 FMS$ERR_SYMDIF: INCONSISTENT SYMMETRY, MATRIX FILE AND SUBROUTINE
The matrix file symmetry, ISTYPE, is inconsistent with the FMS subroutine called. Check the file attribute list and the subroutine traceback printed by FMS.
25 FMS$ERR_MDDIF: INCONSISTENT DATA TYPE, MATRIX FILE AND SUBROUTINE
The matrix file data type, IDTYPE, is inconsistent with the FMS subroutine called. Check the file attribute list and the subroutine traceback printed by FMS.
26 FMS$ERR_VDDIF: INCONSISTENT DATA TYPE, VECTOR FILE AND SUBROUTINE
The vector file data type, IDTYPE, is inconsistent with the FMS subroutine called. Check the file attribute list and the subroutine traceback printed by FMS.
27 FMS$ERR_REDUCED: ATTEMPT TO REDUCE ALREADY REDUCED VECTORS
Subroutine RSDS, RNDS, CHDS, CSDS, or CNDS was called with the formal parameter ISKIP=0. The vector file status on the specified input vector file, IVSTAT, indicates that the vectors have already been reduced. Check the specified vector file and the value of ISKIP to determine the inconsistency.
28 FMS$ERR_LUPR: ERROR WRITING TO PRINT OUTPUT FILE LUPR
An I/O error occurred while writing to the FMS output file, LUPR. Check the value of IOSTAT and refer to the appropriate operating system manual for your processor to determine the cause of failure.
29 FMS$ERR_OUTSIDE: SUBMATRIX EQUATION OUTSIDE MATRIX PROFILE
A submatrix integer file contains an equation number that falls outside the matrix profile. The error message includes the submatrix file number, record number, format type, equation number, and coupling equation number. This error usually indicates an error in computing the matrix profile.
30 FMS$ERR_SUBTYPE: SUBMATRIX TYPE INAPPROPRIATE FOR PROBLEM
The submatrix type for symmetric problems must be in the range one through five and for nonsymmetric problems one to two. The error message includes the submatrix file number, record number, and format type. This error occurs if symmetric matrix types 3, 4, or 5 are specified for nonsymmetric problems. Submatrix types that are out of range (zero or greater than five) usually indicate that the submatrix integer record was not written properly.
31 FMS$ERR_ORDER: SUBMATRIX EQUATIONS NOT IN REQUIRED ORDER
Submatrix type 3 was specified but the equations were not in numerical order. The message includes the submatrix file number, record number, format type, equation number, and coupling equation number. Check the submatrix integer file for possible errors. If the equations are in a random order, change the submatrix type to 4.
32 FMS$ERR_LOWASM: STARTING EQUATION FOR MATRIX ASSEMBLY OUT OF RANGE
The FMS parameter, LOWASM, is greater than the number of equations. This condition indicates an error in specifying LOWASM or an attempt to reassemble and factor a matrix that has not changed.
33 FMS$ERR_PIVOT: SMALL OR ZERO PIVOT DURING FACTORING FOR EQUATION number
This condition occurs when a pivot is close to zero, and the FMS Parameter MZERO=0 (default) is set to halt on zero pivots. The error message includes the equation number, the original matrix diagonal D, the inner product sum S, and the resulting pivot P. This message indicates possible linear dependent equations, due to bad matrix data. Refer to the discussion on pivot precision monitoring for more details.
34 FMS$ERR_VALUE: ACTUAL PARAMETER EXCEEDS MAXIMUM ALLOWED
The value of an actual parameter exceeded the allowed value. The message includes the specified value and the allowed maximum. This error may occur if you specify more vectors for processing than exist on the input or output files.
35 FMS$ERR_GETMEM: ERROR ALLOCATING MEMORY
The dimensioned number of memory regions was exceeded. The message includes the current memory region that was assigned and the maximum allowed. This error indicates that an excessive number of incore files are opened concurrently.
36 FMS$ERR_RELMEM: ERROR RELEASING MEMORY
The requested memory region cannot be returned. The message includes the starting and ending memory addresses, the region number, and the number of regions. This error should not occur. It indicates that the memory pointers were destroyed, probably due to exceeding array bounds.
37 FMS$ERR_USRSUB: TEST USER SUPPLIED SUBROUTINE CALLED
The FMS object library contains subroutines RSUBLK, RNUBLK, CHUBLK, CSUBLK, CNUBLK, RNUSLB, CNUSLB, RSUPIV, RNUPIV, which are used to generate test data for the DEMO program. You have directed FMS to call one of these routines by specifying MDATAU = 1 or 2, or MZERO = 2. You must write your own version of these subroutines. When linking, you must specify the files containing your version, before the FMS library version.
38 FMS$ERR_SUBEQN: SUBMATRIX EQUATION EXCEEDS MAXIMUM SPECIFIED.
An equation number found on a submatrix integer record exceeded the maximum number of specified equations MAXEQ on a call to FMSPF or FMSWF.
39 FMS$ERR_SUBZERO: ZERO SUBMATRIX RECORD LENGTH SPECIFIED.
A submatrix file having fixed-length records (LUS(7)=0) has a zero record length specified (LUS(3), LUS(4) or LUS(10)). This error indicates that the contents of your submatrix file attribute list have been modified since the call to FMSOS.
40 FMS$ERR_MAXVEC: MORE VECTORS SPECIFIED THAN FILE CONTAINS
The number of vectors specified for processing on the subroutine call exceeds the number of vectors on the vector file(s).
41 FMS$ERR_FMSRONOTFULLW: ERROR CALLING SUBROUTINE FMSROW OR FMSCOL
This error is caused by one of the following conditions:
  1. FMSROW and FMSCOL both called,
  2. Attempt to write an equation twice,
  3. Too many calls,
  4. Not all equations written.

You use FMSROW to define the matrix by rows, FMSCOL to define the matrix by columns. You cannot mix calls to FMSROW and FMSCOL for the same matrix.

You must define each equation once. FMSROW and FMSCOL expect to be called N+2 times, where N is the number of equations. The extra 2 calls are for setup (IEQN=0) and termination (IEQN=N+1).

42 FMS$ERR_: ATTEMPT TO PERFORM A FULL MATRIX FUNCTION ON PROFILE MATRIX
You have directed FMS to perform pivoting by specifying a SLAB matrix with MFMAT=3. However, your matrix is not full, as required.
43 FMS$ERR_FMSINICPUOVER: FMSINI NOT CALLED AS FIRST SUBROUTINE
You must call FMSINI before calling any other FMS subroutine. In most cases, FMS has done this for you.
44 FMS$ERR_: CPU TASK BUFFER OVERFLOW
Too many tasks were dispatched to FMSPAR. A maximum of (MAXCPU-1) children tasks can be started in parallel before FMSYNC must be called.
45 FMS$ERR_NOASYNC: ATTEMPT TO DO ASYNC I/O TO FILE OPENED FOR SYNC I/O
Asynchronous I/O was attempted on a file opened for synchronous I/O. The IOSYNC Parameter was set for synchronous when the file was opened, but was changed for asynchronous operation after the file was opened.
46 FMS$ERR_NOSHR: ARGUMENT NOT IN SHARED MEMORY
An argument to the parallel dispatch routine FMSPAR was not in shared memory. You should allocate data needed by subroutines called in parallel from the FMS memory pool using the memory management system.
47 FMS$ERR_FILLIMIT: FMS STRIPE FILE LIMIT EXCEEDED
The maximum number of open stripe files per queue is too large. Try closing some files if they are not used.
48 FMS$ERR_LICVAL: ATTEMPT TO SET FMS PARAMETER BEYOND LICENSE MAXIMUM
An attempt was made to set an FMS parameter to a value which would exceed the maximum for that parameter as authorized in the FMS license file.
49 FMS$ERR_BUFFULL: ALL BUFFERS FULL
The buffer pointers FMS uses for performing asynchronous I/O have become corrupted. Check the bounds of your arrays.
50 FMS$ERR_SEM: ERROR PROCESSING SEMAPHORE
An error has occurred acquiring or releasing a semaphore.
51 FMS$ERR_EXTEND: ERROR EXTENDING FILE
An error has occurred extending a file.
52 FMS$ERR_DEADLOCK: DEADLOCK - ALL TASKS WAITING ON EVENTS
The parent and children are all waiting on each other. If you have changed the FMS Parameter IPOLLD, reset it to the default value. If all else fails, try setting MAXCPU to 1.
53 FMS$ERR_FMSPUT: BAD PARAMETER ON CALL
Subroutine FMSPUT was called with a bad file number in the file attribute list LUFMS, or the data window specified by A(IROW1:IROW1+NROWS-1,JCOL1:JCOL1+NCOLS-1) is outside the data being stored on the file.
54 FMS$ERR_FMSGET: BAD PARAMETER ON CALL
Subroutine FMSGET was called with a bad file number in the Vector File Attribute List, or the data window specified by A(IROW1:IROW1+NROWS-1,JCOL1:JCOL1+NCOLS-1) is outside the data being stored on the file.
55 FMS$ERR_FORMAT: MATRIX FILE DATA IN WRONG FORMAT
Subroutine RSDEX, RNDEX, CHDEX, CSDEX, CNDEX was called but the matrix file is not in standard FMS format. This can occur if the matrix data was written by FMSROW, FMSCOL or FMSPUT and subroutine RSDAF, RNDAF, CHDAF, CSDAF, CNDAF has not been called to reformat the matrix data.
56 FMS$ERR_NOCODE: FEATURE NOT IMPLEMENTED
The call requested functionality that is not currently implemented.
57 FMS$ERR_IODIRECT: ALIGNMENT OR LENGTH ERROR
The FMS Parameter IOTYPE specified that direct I/O is to be performed but the conditions of the requested transfer do not meet the requirements. This can occur if the transfer length is not an integer multiple of the transfer unit size (usually a page), the memory address does not fall on a required boundary (usually a page) or the disk address does not fall on a required boundary (usually a page). Check the printed output for the transfer to determine which value is in error.
58 FMS$ERR_FMSSET: BAD PARAMETER ON CALL
Subroutine FMSIST, FMSRST, FMSCST or FMSIGT, FMSRGT, FMSCGT was called with a bad Parameter name or value.
59 FMS$ERR_PARENT: NOT CALLED FROM PARENT
A subroutine which must be called by the parent was called by a child thread. This usually occurs with calls to subroutines FMSPAR, FMSILG, FMSRLG, FMSCLG or FMSILR, FMSRLR, FMSCLR.
60 FMS$ERR_NOTHREAD: THREAD CANNOT BE FOUND
A call to FMSIGT(' MYNODE', MYNODE) was made to obtain the thread number MYNODE of the calling thread but the thread could not be found.
61 FMS$ERR_RUNSYNC: INCONSISTENT CALLS TO FMSRUN AND FMSYNC
This error occurs when the calls to FMSPAR, FMSRUN and FMSYNC are inconsistent. The order of the calls must be as follows:
  1. FMSPAR is called to queue work for each child thread,
  2. FMSRUN is called once to start the children running,
  3. The parent performs some work (usually similar to the children tasks),
  4. FMSYNC is called once to wait for all children to complete.
62 FMS$ERR_GPU: ERROR IN GPU PROCESSING
This message occurs if a call to a CUDA RUNTIME LIbRARY or CUBLAS routine returns an error code. See printout for the name of the routine and additional information.
63 FMS$ERR_BLAS: ERROR ON BLAS PARAMETER
This error occurs if one of the arguments to a BLAS routine is in error.