home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 18 REXX
/
18-REXX.zip
/
rxls01.cmd
< prev
next >
Wrap
OS/2 REXX Batch file
|
1994-10-03
|
8KB
|
110 lines
/*------------------------------------------------------------------------*\
| |
| 9411LS01.CMD - Generic Trap Processing Routine |
| |
\*------------------------------------------------------------------------*/
SIGNAL ON ERROR /* trap object time errors */ /* 0006 */
SIGNAL ON FAILURE /* trap object time errors */ /* 0007 */
SIGNAL ON HALT /* trap object time errors */ /* 0008 */
SIGNAL ON NOVALUE /* trap object time errors */ /* 0009 */
SIGNAL ON SYNTAX /* trap object time errors */ /* 0010 */
/* 0011 */
'copy a_b_c_d nul' /* 0012 */
exit /* 0013 */
/* 0014 */
/*------------------------------------------------------------------------*\
| |
| Trap Routines |
| |
\*------------------------------------------------------------------------*/
ERROR: call TRAP_PROCESSING SIGL, 'ERROR', RC /* 0020 */
FAILURE: call TRAP_PROCESSING SIGL, 'FAILURE', RC /* 0021 */
HALT: call TRAP_PROCESSING SIGL, 'HALT', '' /* 0022 */
NOVALUE: call TRAP_PROCESSING SIGL, 'NOVALUE', '' /* 0023 */
SYNTAX: call TRAP_PROCESSING SIGL, 'SYNTAX', RC /* 0024 */
/* 0025 */
/* Rev. 94/06/14 */ /* 0026 */
TRAP_PROCESSING: /* 0027 */
parse Source . . TRAP.path_and_program /* 0028 */
if POS( ':', TRAP.path_and_program ) > 0 then /* 0029 */
/* get source line if it is available */ /* 0030 */
do /* 0031 */
trap_source_line = STRIP( SOURCELINE(ARG(1)) ) /* 0032 */
end /* 0033 */
else /* 0034 */
/* program is running in macrospace */ /* 0035 */
do /* 0036 */
TRAP.path_and_program = VALUE( 'TEMP',, 'OS2ENVIRONMENT' ) ||,
TRAP.path_and_program /* 0038 */
trap_source_line = 'Source line is not available.' /* 0039 */
end /* 0040 */
/* 0041 */
parse value FILESPEC( 'N', TRAP.path_and_program ) with, /* 0042 */
TRAP.fn '.' TRAP.fe /* 0043 */
trap_file_name = FILESPEC( 'D', TRAP.path_and_program ) ||, /* 0044 */
FILESPEC( 'P', TRAP.path_and_program ) ||, /* 0045 */
TRAP.fn || '.' || 'DMP' /* 0046 */
/* 0047 */
/*------------------------------------------*\ /* 0048 */
| check for reason not to create .DMP file | /* 0049 */
\*------------------------------------------*/ /* 0050 */
if ARG(2) = 'HALT' then /* 0051 */
do /* 0052 */
trap_file_name = '' /* 0053 */
end /* 0054 */
if RxFuncQuery( 'VARDUMP' ) <> 0 then /* 0055 */
do /* 0056 */
trap_file_name = '' /* 0057 */
end /* 0058 */
if POS( ':', trap_file_name ) = 0 then /* 0059 */
do /* 0060 */
trap_file_name = '' /* 0061 */
end /* 0062 */
/* 0063 */
/*------------------------*\ /* 0064 */
| Build trap message box | /* 0065 */
\*------------------------*/ /* 0066 */
dbl.h = 'CD'x /* I double line - horizontal */
dbl.v = 'BA'x /* o double line - vertical */
dbl.bl = 'C8'x /* E double line - bottom left */
dbl.br = 'BC'x /* ? double line - bottom right */
dbl.tl = 'C9'x /* E double line - top left */
dbl.tr = 'BB'x /* " double line - top right */
say ' ' /* 0073 */
trap_error_description =, /* 0074 */
'Error line = ' || ARG(1) ||, /* 0075 */
'; ' ||, /* 0076 */
ARG(2) ||, /* 0077 */
' error.' /* 0078 */
if ARG(3) <> '' then /* 0079 */
trap_error_description = trap_error_description ||, /* 0080 */
' Return code = ' || ARG(3) /* 0081 */
say dbl.tl || COPIES( dbl.h, LENGTH(trap_error_description) + 2 ) || dbl.tr
say dbl.v || COPIES( ' ', LENGTH(trap_error_description) + 2 ) || dbl.v
say dbl.v CENTER( TRAP.fn || '.CMD', LENGTH(trap_error_description)) dbl.v
say dbl.v trap_error_description dbl.v
if trap_file_name <> '' then /* 0086 */
do /* 0087 */
say dbl.v || COPIES( ' ', LENGTH(trap_error_description) + 2 ) || dbl.v
say dbl.v CENTER( 'See: ' || trap_file_name,, /* 0089 */
LENGTH(trap_error_description) ) dbl.v
end /* 0091 */
say dbl.v || COPIES( ' ', LENGTH(trap_error_description) + 2 ) || dbl.v
say dbl.bl || COPIES( dbl.h, LENGTH(trap_error_description) + 2 ) || dbl.br
say ' ' /* 0094 */
say 'Source line at time of trap:' /* 0095 */
say ' ' || trap_source_line /* 0096 */
say ' ' /* 0097 */
/* 0098 */
/*---------------------------------*\ /* 0099 */
| Create .DMP file if appropriate | /* 0100 */
\*---------------------------------*/ /* 0101 */
if trap_file_name <> '' then /* 0102 */
do /* 0103 */
call SysFileDelete trap_file_name /* 0104 */
/* remove meaningless labels from dump for clarity */ /* 0105 */
drop dbl. TRAP. RC RESULT SIGL !tr! /* 0106 */
call VARDUMP trap_file_name /* write variables to program.DMP file */
end /* 0108 */
exit 254 /* 0109 */