Fortran: 09.01/P02

This is Fortran source code, based on the abstract design for this program. You may return to the documentation for the module containing this program, or to the entire hierarchical table of topics covered by the PVT.


C  *********************************************************
C  *                                                       *
C  *    TEST NUMBER: 09.01/02                              *
C  *    TEST TITLE : User error handling capabilities      *
C  *                                                       *
C  *    PHIGS Validation Tests, produced by NIST           *
C  *                                                       *
C  *********************************************************

      COMMON /GLOBNU/ CTLHND, ERRSIG, ERRFIL, IERRCT, UNERR,
     1        TESTCT, IFLERR, PASSSW, ERRSW, MAXLIN,
     2        CONID, MEMUN, WKID, WTYPE, GLBLUN, INDLUN,
     3        DUMINT, DUMRL
      INTEGER         CTLHND, ERRSIG, ERRFIL, IERRCT, UNERR,
     1        TESTCT, IFLERR, PASSSW, ERRSW, MAXLIN,
     2        CONID, MEMUN, WKID, WTYPE, GLBLUN, INDLUN,
     3        DUMINT(20), ERRIND
      REAL    DUMRL(20)

      COMMON /GLOBCH/ PIDENT,    GLBERR,    TSTMSG,     FUNCID,
     1                DUMCH
      CHARACTER       PIDENT*40, GLBERR*60, TSTMSG*900, FUNCID*80,
     1                DUMCH(20)*20

      COMMON /ERRINF/ ERRCOM,FUNCOM,FILCOM, ERNMSW, EXPSIZ,EXPERR,
     1                USRERR, ERRSAV,      FUNSAV,      FILSAV,
     2                EFCNT, EFID
      INTEGER         ERRCOM,FUNCOM,FILCOM, ERNMSW, EXPSIZ,EXPERR(10),
     1                USRERR, ERRSAV(200), FUNSAV(200), FILSAV(200),
     2                EFCNT, EFID(100)
      COMMON /ERRCHR/ CURCON,     ERRSRS,    ERRMRK,    ERFLNM,
     1                CONTAB
      CHARACTER       CURCON*200, ERRSRS*40, ERRMRK*20, ERFLNM*80,
     1                CONTAB(40)*150


C PHIGS function names (for those functions which signal error)
      INTEGER    EPL3,       EPL,        EPM3,       EPM
      PARAMETER (EPL3  =008, EPL   =009, EPM3  =010, EPM   =011)

C off/on switch for edge flag and error handling mode
      INTEGER    POFF,     PON
      PARAMETER (POFF = 0, PON = 1)

      INTEGER         ISIZ, N
      REAL PXA(2), PYA(2)

      CALL INITGL ('09.01/02')

      CALL ESETUP (1)

      CALL SETRVS ('0.,0.5', PXA, ISIZ)
      CALL SETRVS ('0.,0.5', PYA, ISIZ)
      N = 2

      CALL SETMSG ('1 5 7', 'If error handling mode is ON, and no ' //
     1             'structure is open, then <polyline> should ' //
     2             'return error number, function identifier, and ' //
     3             'error file to the user defined error handler.')

      CALL PSERHM (PON)
      ERRCOM = 999
      FUNCOM = 999
      FILCOM = 999
      CALL ERRCTL (.TRUE.)
      CALL PPL (N, PXA, PYA)
      CALL ERRCTL (.FALSE.)

      CALL IFPF (ERRCOM.EQ.5 .AND. FUNCOM.EQ.EPL .AND. FILCOM.EQ.ERRFIL)

      CALL SETMSG ('1 10', 'If error handling mode is OFF, and no ' //
     1             'structure is open, then <polyline> should not ' //
     2             'return error number, function identifier and ' //
     3             'error file to the user defined error handler.')

      CALL PSERHM (POFF)
      ERRCOM = 999
      FUNCOM = 999
      FILCOM = 999
      CALL ERRCTL (.TRUE.)
      CALL PPL (2, PXA, PYA)
      CALL ERRCTL (.FALSE.)

      CALL IFPF (ERRCOM .EQ. 999 .AND. FUNCOM .EQ. 999 .AND.
     1           FILCOM .EQ. 999)

      CALL ENDIT

      END