Fortran: 03.02/P01
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: 03.02/01 *
C * TEST TITLE : Setting and inquiring conflict *
C * resolution flags *
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 conflict resolution
C maintain abandon update
INTEGER PCRMNT, PCRABA, PCRUPD
PARAMETER (PCRMNT = 0, PCRABA = 1, PCRUPD = 2)
INTEGER ARCRST, RECRST, ARCRIQ, RECRIQ
CHARACTER MSG*300
C Throughout, use variable names:
C arcrst : archival conflict resolution flag, as set
C recrst : retrieval conflict resolution flag, as set
C arcriq : archival conflict resolution flag, as inquired
C recriq : retrieval conflict resolution flag, as inquired
CALL INITGL ('03.02/01')
C <open phigs>
CALL XPOPPH (ERRFIL, MEMUN)
CALL SETMSG ('1 3', 'Immediately after <open phigs>, the ' //
1 'archival conflict resolution flag should be ' //
2 'reported as UPDATE and the retrieval ' //
3 'conflict resolution flag should be reported ' //
4 'as ABANDON.')
CALL PQCNRS (ERRIND, ARCRIQ, RECRIQ)
CALL IFPF (ERRIND .EQ. 0 .AND.
1 ARCRIQ .EQ. PCRUPD .AND.
2 RECRIQ .EQ. PCRABA)
CALL SETMSG ('2 3', 'It should be possible to set and inquire ' //
1 'the conflict resolution flags to all ' //
2 'combinations of valid values: MAINTAIN, ' //
3 'ABANDON, and UPDATE.')
DO 100 ARCRST = PCRMNT, PCRUPD
DO 200 RECRST = PCRMNT, PCRUPD
C <set conflict resolution> with arcrst, recrst
CALL PSCNRS (ARCRST, RECRST)
C <inquire conflict resolution>
CALL PQCNRS (ERRIND, ARCRIQ, RECRIQ)
IF (ERRIND .EQ. 0 .AND.
1 ARCRIQ .EQ. ARCRST .AND.
2 RECRIQ .EQ. RECRST) THEN
C OK so far
ELSE
WRITE (MSG, '(5(A,I4),A)') 'Set conflict flags as [',
1 ARCRST, ',', RECRST, '], but reported as [',
2 ARCRIQ, ',', RECRIQ, '], with error code = ',
3 ERRIND, '.'
CALL INMSG (MSG)
CALL FAIL
GOTO 500
ENDIF
200 CONTINUE
100 CONTINUE
CALL PASS
C end_set_loop:
500 CONTINUE
C <set conflict resolution> with MAINTAIN, MAINTAIN
CALL PSCNRS (PCRMNT, PCRMNT)
C <close phigs>
CALL PCLPH
C <open phigs> again
CALL XPOPPH (ERRFIL, MEMUN)
CALL SETMSG ('1 3', 'Immediately after re-opening phigs, the ' //
1 'archival conflict resolution flag should be ' //
2 'reported as UPDATE and the retrieval conflict ' //
3 'resolution flag should be reported as ABANDON.')
CALL PQCNRS (ERRIND, ARCRIQ, RECRIQ)
CALL IFPF (ERRIND .EQ. 0 .AND.
1 ARCRIQ .EQ. PCRUPD .AND.
2 RECRIQ .EQ. PCRABA)
CALL ENDIT
END