This is an old revision of the document!
This is part of Family API which allow to create dual-os version of program runs under OS/2 and DOS
Note: This is legacy API call. It is recommended to use 32-bit equivalent
This call helps OS/2 applications respond to error codes (return codes) received from OS/2.
Syntax
DosErrClass (Code, Class, Action, Locus)
Parameters
;Code (USHORT) - input : Error code returned by an OS/2 function. ;Class (PUSHORT) - output : Address of the classification of an error. ;Action (PUSHORT) - output : Address of the action for an error. ;Locus (PUSHORT) - output : Address of the origin of an error.
Return Code
;rc (USHORT) - return:Return code descriptions are: * 0 NO_ERROR
Remarks
The input is a return code returned from another function call, and the output is a classification of the return and recommended action. Depending on the application, the recommended action could be followed, or a more specific application recovery could be performed.
The following values are returned in Class, Action, and Locus: {|class=“wikitable”
!VALUE||MNEMONIC||DESCRIPTION
1 | OUTRES | ||
2 | TEMPSIT | ||
3 | AUTH | ||
4 | INTRN | ||
5 | HRDFAIL | ||
6 | SYSFAIL | ||
7 | APPERR | ||
8 | NOTFND | ||
9 | BADFMT | ||
10 | LOCKED | ||
11 | MEDIA | ||
12 | ALREADY | ||
13 | UNK | ||
14 | CANT | ||
15 | TIME | ||
{|class=“wikitable”
!VALUE||MNEMONIC||DESCRIPTION
1 | RETRY | ||
2 | DLYRET | ||
3 | USER | ||
4 | ABORT | ||
5 | PANIC | ||
6 | IGNORE | ||
7 | INTRET | ||
{|class=“wikitable”
!VALUE||MNEMONIC||DESCRIPTION
1 | UNK | ||
2 | DISK | ||
3 | NET | ||
4 | SERDEV | ||
5 | MEM | ||
Family API Considerations
Some options operate differently in the DOS mode than in the OS/2 mode. Therefore, the following considerations apply to DosErrClass when coding for the DOS mode:
When DosErrClass is called by a family application, it returns a valid error classification for returns that have occurred. The classifications of a given return code may not be the same for the Family API and the OS/2 mode applications.
Bindings
C
<PRE> #define INCL_DOSMISC
USHORT rc = DosErrClass(Code, Class, Action, Locus);
USHORT Code; /* Error code for analysis */ PUSHORT Class; /* Error classification (returned) */ PUSHORT Action; /* Recommended action (returned) */ PUSHORT Locus; /* Error locus (returned) */
USHORT rc; /* return code */ </PRE>
MASM
<PRE> EXTRN DosErrClass:FAR INCL_DOSMISC EQU 1
PUSH WORD Code ;Error code for analysis PUSH@ WORD Class ;Error classification (returned) PUSH@ WORD Action ;Recommended action (returned) PUSH@ WORD Locus ;Error locus (returned) CALL DosErrClass
Returns WORD </PRE>
Example Code
This example attempts to delete a non-existent file. The error returned is then plugged into DosErrClass for more information about the error and what actions should be taken. <PRE> #define INCL_DOSQUEUES
#define RESERVED 0L #define FILE_DELETE “adlkjf.dkf”
USHORT Error; USHORT Class; USHORT Action; USHORT Locus; USHORT rc;
Error = DosDelete(FILE_DELETE, /* File name path */ RESERVED); /* Reserved (must be zero) */ rc = DosErrClass(Error, /* Error code for analysis */ &Class, /* Error classification */ &Action, /* Recommended action */ &Locus); /* Error locus */
</PRE>