home *** CD-ROM | disk | FTP | other *** search
- /*********************************************************************
- *
- * Name: EXAMPLE1.prg
- * Description: Error System Demo Program
- * Author: Philip H. Schwartz
- * Audience: Nantucket DEVCON '90
- * Written: June 5, 1990
- * Compiler: Clipper 5.0 V7.7 BETA
- * Comp Option:
- * Linker: RTLink Version 1.3 (Clipper)
- * Library: clipper, extend
- * Obj Module: MYERR.obj
- * Link input: rtlink fi example1,myerr out example1 li clipper,extend
- * Headers: STD.ch, ERROR.ch
- * Copyright: (c) 1990 Philip H. Schwartz
- * Rights: All Commercial & Publishing Rights Reserved
- *
- *********************************************************************/
-
- #include "ERROR.ch"
-
- #define PROGRAM_VERSION 7.7
- #define COMPILE_DATE 90.167
-
- LOCAL bSaveError,aErrors,nErrType
- PUBLIC sys_vers:=PROGRAM_VERSION,sys_exe:=COMPILE_DATE
-
- aErrors:={"Variable does not exist",;
- "Open error",;
- "Argument error",;
- "String overflow",;
- "Internal out of memory (664)"}
-
- bSaveError:=ERRORBLOCK() // save default errorblock
- ERRORBLOCK({|e| MyError(e)}) // install alternate handler
-
- CLS
- @ 1,0 TO 7,30 DOUBLE
- nErrType=1
- nErrType=ACHOICE(2,1,6,29,aErrors)
-
- /* The last UDF() in the chain issues the errors so we can build up a
- Call Stack for illustrative purposes. */
- IF nErrType!=0
- CLS
- Craig(nErrType)
- ENDIF
-
- ERRORBLOCK(bSaveError) // always restore default errorblock
- RETURN
-
- /* The following functions are declared STATIC since they
- are only known to this PRG. */
- STATIC FUNCTION Craig
- PARAMETER nErr
- Ed(nErr)
- RETURN NIL
-
- STATIC FUNCTION Ed
- PARAMETER nErr
- Rich(nErr)
- RETURN NIL
-
- STATIC FUNCTION Rich
- PARAMETER nErr
- Savannah(nErr)
- RETURN NIL
-
- STATIC FUNCTION Savannah
- PARAMETER nErr
- Phil(nErr)
- RETURN NIL
-
- STATIC FUNCTION Phil
- LOCAL cString,x,i,aARR
- PARAMETER nErr
- DO CASE
- CASE nErr=1 // Error-Variable does not exist
- ? x*unkn
- CASE nErr=2 // Error-Open error
- USE nodbf
- CASE nErr=3 // Error-Argument error
- x=2+"7"
- CASE nErr=4 // Error-String overflow
- cString=REPLICATE("*",10000)
- cString=cString+cString+cString+cString
- cString=cString+cString+cString+cString
- ? "Stringsize is ",LEN(cString)
- ? "String is ",cString
- INKEY(0)
- CASE nErr=5 // Error-Internal error
- ? "Internal Errors are not trapped!"
- aARR:=ARRAY(1000)
- FOR i=1 TO 1000
- aARR[i]=SPACE(1000)
- NEXT
- ENDCASE
- RETURN NIL
- /*EOF*/