### 3 Reporting Errors

The subroutine used to report errors is EMS_REP. It has a calling sequence analogous to that of ERR_REP, i.e.

CALL EMS_REP( PARAM, TEXT, STATUS )

The argument PARAM is the error message name, TEXT is the error message text and STATUS is the inherited status. The TEXT and STATUS arguments are the same as those used in calls to ERR_REP and are discussed fully in SUN/104.

On exit from EMS_REP the status argument remains unchanged, with two exceptions:

• If STATUS set to SAI__OK on entry, STATUS is returned set to EMS__BADOK.
• If an output error occurs, STATUS is returned set to EMS__OPTER.

Appendix E lists the symbolic constants for all the possible EMS errors.

The deferral of error reporting can be controlled within EMS: EMS_MARK and EMS_RLSE respectively mark and release error reporting contexts; EMS_ANNUL annuls all error reports pending output in a given error context; EMS_BEGIN and EMS_END respectively begin and end error reporting environments. The behaviour of these subroutines is analogous to ERR_MARK, ERR_RLSE, ERR_ANNUL, ERR_BEGIN and ERR_END provided by the Error Reporting System (see SUN/104). EMS does not provide an analogue to ERR_FLUSH.