Fortran: 04.03.03/P04

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: 04.03.03/04                           *
C  *    TEST TITLE : Updating of HLHSR modes               *
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

C  Declare program-specific variables
      INTEGER UPSTAT, CURMOD, REQMOD
      INTEGER IDUM1, IDUM2
C regeneration flag
      INTEGER    PPOSTP,     PPERFO
      PARAMETER (PPOSTP = 0, PPERFO = 1)
C update state
      INTEGER    PNPEND,     PPEND
      PARAMETER (PNPEND = 0, PPEND =1)

      LOGICAL    STATOK


C parameters for <inquire workstation connection and type>
      INTEGER    SPECWT, SPECON

      REAL       XP(2),YP(2)

      DATA  XP /0.0, 1.0/
      DATA  YP /0.0, 1.0/

      CALL INITGL ('04.03.03/04')

C open PHIGS
      CALL XPOPPH (ERRFIL, MEMUN)
C open workstation
      CALL POPWK (WKID, CONID, WTYPE)
C get this workstation type
      CALL PQWKC  (WKID, ERRIND, SPECON, SPECWT)
      CALL CHKINQ ('pqwkc', ERRIND)

C <inquire HLHSR mode> to determine
C  upstat = HLHSR update state
C  curmod = current HLHSR mode
C  reqmod = requested HLHSR mode
      UPSTAT = -6
      CURMOD = -6
      REQMOD = -6
      CALL PQHRM (WKID, ERRIND, UPSTAT, CURMOD, REQMOD)
      CALL CHKINQ ('pqhrm', ERRIND)

C check upstat is valid upon <open workstation>
      STATOK = (UPSTAT .EQ. PNPEND .OR. UPSTAT .EQ. PPEND)

      CALL SETMSG ('12', 'Immediately after <open workstation>, '   //
     1             'the HLHSR update state should be NOTPENDING.')
      CALL IFPF (UPSTAT .EQ. PNPEND)

      CALL SETMSG ('13', 'Immediately after <open workstation>, '   //
     1             'the current HLHSR mode should be 0.')
      CALL IFPF (CURMOD .EQ. 0)

      CALL SETMSG ('14', 'Immediately after <open workstation>, '   //
     1             'the requested HLHSR mode should be 0.')
      CALL IFPF (REQMOD .EQ. 0)

C Try to cause HLHSR update state to be PENDING by making
C   surface NOT EMPTY:
      CALL POPST (10)
      CALL PPL   (2,XP,YP)
      CALL PCLST
      CALL PPOST (WKID, 10, 0.5)
      CALL PUWK  (WKID, PPERFO)

      CALL SETMSG ('15', 'The HLHSR update state should be either '   //
     1             'PENDING or NOTPENDING.')
C re-set HLHSR mode
      CALL PSHRM (WKID, 0)
      UPSTAT = -66
      CALL PQHRM (WKID, ERRIND, UPSTAT, IDUM1,IDUM2)
      CALL CHKINQ ('pqhrm', ERRIND)
      CALL IFPF ((UPSTAT .EQ. PNPEND .OR. UPSTAT .EQ. PPEND) .AND.
     1            STATOK)

C  close workstation and re-open
      CALL PCLWK (WKID)
      CALL POPWK (WKID, CONID, WTYPE)

      CALL SETMSG ('12', 'Immediately after re-opening the '   //
     1             'workstation, the HLHSR update state should ' //
     2             'be NOTPENDING.')
      UPSTAT = -66
      CALL PQHRM (WKID, ERRIND, UPSTAT, IDUM1, IDUM2)
      CALL CHKINQ ('pqhrm', ERRIND)
      CALL IFPF (UPSTAT .EQ. PNPEND)

666   CONTINUE
      CALL ENDIT
      END