Trailing-Edge
-
PDP-10 Archives
-
k20v7d
-
uetp/lib/dtvrb1.fml
There is 1 other file named dtvrb1.fml in the archive. Click here to see a list.
* Program DTVRB1 - Basic DML Verb Test Main Program
* (offshoot of BAS01F.TDM)
* Part of the UETP and verify test system for DBMS-20
* Copyright (C) 1984 by
* Digital Equipment Corporation, Maynard, Mass.
*
* This software is furnished under a license, and may be used
* or copied only in accordance with the terms of that license.
C LARGE DML TEST, ENCOMPASSING AT LEAST ONE OF ALL DML
C SYNTACTICAL CONSTRUCTS, PLUS AUXILARY FUNCTIONS AND ROUTINES
C USED TO TEST DML VERB PROCESSORS, AND DBCS IN GENERAL
C LAST UNIQUE ERROR NUMBER = 294
PROGRAM DTVRB1
C THE BASIC DML VERB TESTS
COMMON IER,IGN
C *******************
C * SIMPLE INVOKE *
C *******************
*DBMS
INVOKE DTSSV1 OF DTVRB.
C ********************************
C * USE PROCEDURE DECLARATIONS *
C ********************************
C NO INVOKE USE PROC SINCE SETUP AFTER INVOKE
C NOTE THAT SINCE SYSCOM ITEMS ARE IN COMMON BLOCK NAMED
C AFTER SUB-SCHEMA, WITH 2 SUB-SCHEMAS EACH TRYING TO SHARE
C THE SAME ERROR PROCS, EACH MUST HAVE AN OPUTER LAYER
C SUB-SCHEMA SPECIFIC TO PASS INFO ALONG
C THEREFORE EEON1 AND EEON2 JACKET EEON PROCESSOR
*DBMS
USE EEON1 IF ERROR-STATUS IS 0307,0326. ! FIND ESA, NRS
*DBMS
USE EUMR1 IF ERSTAT 0009. !ANY UMR
* DBMS
USE EDEL1 IF ERSTAT 0200. !ANY DELETE EXCEP
*DBMS
USE EGEN1 IF ERROR-STATUS. !ANY EXCEP NOT CASED ABOVE
TYPE 9991
9991 FORMAT(' [Beginning basic DML tests]'/)
C *********************************
C * BASIC OPEN/CLOSE USAGES *
C * SOME JM???? JRN MANIP CALLS *
C * PLUS JRDATA & JRTEXT CALLS *
* * VARIOUS OTHER VERBS AS WELL *
C *********************************
IER=0
IGN=0
IPAD=40
CALL JMDISK
*DBMS
OPEN ALL USAGE-MODE IS UPDATE PRIVACY KEY IS BADM.
OIC=2
*DBMS
STORE O1.
C MUST CHECK PADDING OF SYSCOM ITEMS
C V6 SPACE PADDED AFTER MOVE STATUS, NUL PADDED AFTER OTHERS
C V6.1 SPACE PADS ALL AS DISTRIBUTED BUT CUST MAY SELECT 6 BEHAV
C DEFAULT IPAD=<>0=ALL BLANKS, =0=V6 BEHAV
IF(RECNAM(2).EQ.0)IPAD=0
P1AREA(1)='TESTA'
P1AREA(2)='2 '
DIRKE2=0
CALL JRTEXT('ABOUT TO STORE A P1 RECORD')
*DBMS
STORE P1.
C CHECKOUT SYSCOM
IF(IPAD.EQ.0)GO TO 10
IF(RECNAM(1).NE.'P1 ' .OR. RECNAM(2).NE.' '
1 .OR. RECNAM(3).NE.' ' .OR. RECNAM(4).NE.' '
2 .OR. RECNAM(5).NE.' ')STOP '?8880B1'
IF(ARNAM(1).NE.'TESTA' .OR. ARNAM(2).NE.'2 '
1 .OR. ARNAM(3).NE.' ' .OR. ARNAM(4).NE.' '
2 .OR. ARNAM(5).NE.' ')STOP '?8881B1'
GO TO 20
10 IF(RECNAM(1).NE.('P1 '.AND."777760000000)
1 .OR. RECNAM(2).NE.0 .OR. RECNAM(3).NE.0
2 .OR. RECNAM(4).NE.0 .OR. RECNAM(5).NE.0)STOP '?8882B1'
IF(ARNAM(1).NE.'TESTA'
1 .OR. ARNAM(2).NE.('2 '.AND."774000000000)
1 .OR. ARNAM(3).NE.0 .OR. ARNAM(4).NE.0
2 .OR. ARNAM(5).NE.0)STOP '?8883B1'
20 MOVE STATUS RUN-UNIT TO I1.
IF(DBKEY.NE.I1)STOP '?8884B1'
CALL JRTEXT('P1 RECORD STORED')
*DBMS
CLOSE JOURNAL.
OPEN AREA TESTA1 USAGE-MODE IS RETRIEVAL PRIVACY KEY BRET.
OPEN AREA TESTA2 USAGE-MODE EXCLUSIVE RETRIEVAL.
FIND O1.
IF(ERSTAT.NE.0)STOP '?8885B1'
MOVE STATUS RUN-UNIT TO I1.
IF(DBKEY.NE.I1)STOP '?8886B1'
GET.
IGN=809
MODIFY O1.
IF(ERSTAT.NE.809)STOP '?8853B1'
IF(IER.NE.809)STOP '?8887B1'
IGN=0
FIND FIRST RECORD OF TESTA2 AREA.
IF(ERSTAT.NE.0)STOP '?8888B1'
IGN=209
DELETE.
IF(ERSTAT.NE.209)STOP '?8854B1'
IF(IER.NE.209)STOP '??8889B1'
IGN=0
CLOSE RUN-UNIT.
CALL JMNAME('DSK:DTVRB.JRN')
CALL JMAFT(0)
*DBMS
OPEN JOURNAL USAGE-MODE UPDATE.
*DBMS
OPEN AREA TESTA1 USAGE-MODE PROTECTED RETRIEVAL PRIVACY KEY BPRET.
*DBMS
OPEN AREA TESTA2 USAGE-MODE PROTECTED UPDATE.
M2D1=20
*DBMS
STORE M2.
IGN=706
*DBMS
INSERT M2 INTO ALL SETS.
IF(ERSTAT.NE.706)STOP '?8855B1'
IF(IER.NE.706)STOP '?8890B1'
C CHECKOUT SYSCOM
IF(IPAD.EQ.0)GO TO 30
IF(ERREC(1).NE.'M2 ' .OR. ERREC(2).NE.' '
1 .OR. ERREC(3).NE.' ' .OR. ERREC(4).NE.' '
2 .OR. ERREC(5).NE.' ')STOP '?8891B1'
IF(ERAREA(1).NE.'TESTA' .OR. ERAREA(2).NE.'2 '
1 .OR. ERAREA(3).NE.' ' .OR. ERAREA(4).NE.' '
2 .OR. ERAREA(5).NE.' ')STOP '?8892B1'
IF(ERSET(1).NE.'O1M2 ' .OR. ERSET(2).NE.' '
1 .OR. ERSET(3).NE.' ' .OR. ERSET(4).NE.' '
2 .OR. ERSET(5).NE.' ')STOP '?8893B1'
GO TO 40
30 IF(ERREC(1).NE.('M2 '.AND."777760000000)
1 .OR. ERREC(2).NE.0
2 .OR. ERREC(3).NE.0 .OR. ERREC(4).NE.0
3 .OR. ERREC(5).NE.0)STOP '?8894B1'
IF(ERAREA(1).NE.'TESTA'
1 .OR. ERAREA(2).NE.('2 '.AND."774000000000)
2 .OR. ERAREA(3).NE.0 .OR. ERAREA(4).NE.0
3 .OR. ERAREA(5).NE.0)STOP '?8895B1'
IF(ERSET(1).NE.('O1M2 '.AND."777777777400)
1 .OR. ERSET(2).NE.0
2 .OR. ERSET(3).NE.0 .OR. ERSET(4).NE.0
3 .OR. ERSET(5).NE.0)STOP '?8896B1'
40 IGN=0
CALL JRDATA(SYSCOM,44)
*DBMS
CLOSE AREA TESTA1,TESTA2.
*DBMS
CLOSE JOURNAL.
CALL JMBOTH('TESTA1','TESTA2')
OPEN ALL USAGE-MODE EXCLUSIVE UPDATE PRIVACY KEY BEUPD.
OPEN TRANSACTION TU.
CALL JRTEXT('DELETEING ALL RECORDS')
FIND FIRST O1 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?8897B1'
DELETE ALL.
FIND FIRST P1 RECORD OF TESTA2 AREA.
IF(ERSTAT.NE.0)STOP '?8898B1'
DELETE P1.
FIND M2.
IF(ERSTAT.NE.0)STOP '?8899B1'
DELETE.
CALL JRDATA(SYSCOM,44)
CLOSE TRANSACTION TU.
CLOSE ALL.
CLOSE RUN-UNIT.
CALL JMNONE('TESTA2')
*DBMS
OPEN JOURNAL USAGE-MODE EXCLUSIVE UPDATE.
IGN=938
*DBMS
OPEN ALL USAGE-MODE UPDATE PRIVACY KEY BADM.
IF(ERSTAT.NE.938)STOP '?8856B1'
IF(IER.NE.938)STOP '?88104B1'
IGN=0
*DBMS
CLOSE JOURNAL.
CALL JMBEF('TESTA2')
OPEN AREA TESTA2 USAGE-MODE EXCLUSIVE UPDATE.
IGN=938
OPEN AREA TESTA1 USAGE-MODE IS UPDATE PRIVACY KEY IS BUPD.
IF(ERSTAT.NE.938)STOP '?8857B1'
IF(IER.NE.938)STOP '?88138B1'
IGN=0
CLOSE JOURNAL.
C *****************************
C * SOME TRANSACTION MANIPS *
C *****************************
OPEN AREA TESTA1 USAGE-MODE EXCLUSIVE UPDATE PRIVACY KEY BEUPD.
OPEN TRANSACTION TUA1.
O1C=99
O1D1=99
STORE O1.
CLOSE TRANSACTION.
CALL JSTRAN('O1MANIP',1)
FIND O1 RECORD.
IF(ERSTAT.NE.0)STOP '?88100B1'
O1D1=30
MODIFY.
CALL JETRAN('O1MANIP',1)
OPEN TRANSACTION TUA1.
FIND O1 RECORD.
IF(ERSTAT.NE.0)STOP '?88101B1'
O1D1=40
MODIFY O1 O1C,O1D1.
DELETE TRANSACTION TUA1.
CALL JSTRAN('O1READ',2)
FIND CURRENT OF O1 RECORD.
IF(ERSTAT.NE.0)STOP '?88102B1'
DELETE O1.
CALL JBTRAN(0)
CALL JSTRAN('O1NEGATE',3)
FIND O1.
IF(ERSTAT.NE.0)STOP '?88103B1'
MODIFY O1.
CALL JBTRAN(2)
OPEN TRANSACTION TUA1.
DELETE O1 ALL.
CLOSE TRANSACTION TUA1.
OPEN TRANSACTION TRA1.
FIND O1 RECORD.
IF(ERSTAT.NE.326)STOP '?88105B1'
DELETE TRANSACTION.
CLOSE JOURNAL.
C *******************************
C * SOME MANUAL CALLS TO DBCS *
C *******************************
C OPEN AREA TESTA1 USAGE-MODE UPDATE PRIVACY KEY BUPD
CALL OPEND(-21,0,'BUPD','TESTA1')
C OPEN TRANSACTION TUA1
CALL OPENT('TUA1')
O1C=29
O1D1=29
C STORE O1
CALL STORED('O1')
M1D1=29
M1D2=29
C STORE M1
CALL STORED('M1')
C FIND FIRST M1 RECORD OF O1M1 SET
CALL FIND3(-12,'M1','O1M1',-20)
IF(ERSTAT.NE.0)STOP '?88106B1'
C FIND OWNER OF O1M1 SET
CALL FIND4('O1M1')
IF(ERSTAT.NE.0)STOP '?88107B1'
C GET O1
CALL GETS('O1')
C DELETE O1 ALL
CALL DELETR('O1',-17)
C CLOSE TRANSACTION TUA1
CALL CLOTR('TUA1')
C CLOSE AREA TESTA1
CALL CLOSED(-18,'TESTA1')
C CLOSE JOURNAL
CALL CLOSED(-28)
C ***********************
C * BASIC VERB USAGES *
C ***********************
*DBMS
OPEN AREA TESTA1 USAGE-MODE UPDATE PRIVACY KEY BUPD.
C ******************************************
C * STORES WITH VARYING SUPPRESS CLAUSES *
C * MOVE CURRENCY FOR CHECKING SUPPRESS *
C * SET-PREDICATES WITH BOTH *
C * PLUS SOME FINDS AND DELETES *
C ******************************************
!FIRST THE SET-PREDICATES
O1C=10
O1D1=10
*DBMS
71 STORE O1.
M1D1=11
M1D2=M1D1
STORE M1 SUPPRESS O1M1 CURRENCY UPDATES.
FIND CURRENT OF O1M1 SET SUPPRESS ALL.
IF(ERSTAT.NE.0)STOP '?88108B1'
IF (.NOT. OWNER('O1M1')) STOP '?881B1'
IF (MEMBER('O1M1')) STOP '?882B1'
IF (EMPTY('O1M1')) STOP '?883B1'
IF (.NOT. TENANT('O1M1')) STOP '?8858B1'
IF (.NOT. OWNER(0)) STOP '?8859B1'
IF (MEMBER(0)) STOP '?8860B1'
IF (.NOT. TENANT(0)) STOP '?8861B1'
72 FIND CURRENT OF M1 RECORD.
IF(ERSTAT.NE.0)STOP '?88109B1'
IF (.NOT. TENANT('O1M1')) STOP '?884B1'
IF (.NOT. MEMBER ('O1M1')) STOP '?885B1'
IF (EMPTY('O1M1')) STOP '?886B1' !THIS CURR SET OCC IDENT BY MEM
IF (OWNER('O1M1')) STOP '?8862B1'
IF (.NOT. TENANT(0)) STOP '?8863B1'
IF (.NOT. MEMBER(0)) STOP '?8864B1'
IF (OWNER(0)) STOP '?8865B1'
!NOW MOVE CURRENCY
1000 MOVE STATUS RUN-UNIT TO IRU.
MOVE CURRENCY STATUS FOR TESTA1 AREA TO IA1.
IF(ARNAM(1).NE.'TESTA' .OR. ARNAM(2).NE.'1 '
1 .OR. ARNAM(3).NE.' ' .OR. ARNAM(4).NE.' '
2 .OR. ARNAM(5).NE.' ')STOP '?88110B1'
MOVE CURRENCY STATUS O1 RECORD TO IO1.
IF(RECNAM(1).NE.'O1 ' .OR. RECNAM(2).NE.' '
1 .OR. RECNAM(3).NE.' ' .OR. RECNAM(4).NE.' '
2 .OR. RECNAM(5).NE.' ')STOP '?88111B1'
MOVE STATUS O1M1 SET TO IO1M1.
MOVE STATUS O1M2 SET TO IO1M2.
O1C=1000
O1D1=O1C
STORE O1 SUPPRESS ALL CURRENCY.
MOVE STATUS RUN-UNIT TO JRU.
MOVE CURRENCY STATUS FOR TESTA1 AREA TO JA1.
MOVE CURRENCY STATUS O1 RECORD TO JO1.
MOVE STATUS O1M1 SET TO JO1M1.
MOVE STATUS O1M2 SET TO JO1M2.
IF(IA1.NE.JA1 .OR. IO1.NE.JO1 .OR. IO1M1.NE.JO1M1
1 .OR. IO1M2.NE.JO1M2)STOP '?8866B1'
IF(IRU.EQ.JRU)STOP '?8867B1'
FIND CURRENT OF RUN-UNIT.
IF(ERSTAT.NE.0)STOP '?88112B1'
MOVE STATUS RUN-UNIT TO IRU.
MOVE CURRENCY STATUS FOR TESTA1 AREA TO IA1.
MOVE CURRENCY STATUS O1 RECORD TO IO1.
MOVE STATUS O1M1 SET TO IO1M1.
MOVE STATUS O1M2 SET TO IO1M2.
IF(IA1.EQ.JA1 .OR. IO1.EQ.JO1 .OR. IO1M1.EQ.JO1M1
1 .OR. IO1M2.EQ.JO1M2)STOP '?8868B1'
IF(IRU.NE.JRU)STOP '?8869B1'
!AND THE REMAINING STORE SUPPRESS VARIANTS
M1D1=21
1001 STORE M1 SUPPRESS RECORD UPDATES.
FIND CURRENT OF M1 RECORD.
IF(ERSTAT.NE.0)STOP '?88113B1'
GET.
IF(M1D1.NE.11)STOP '?8870B1'
M1D2=30
MODIFY M1,M1D2.
M1D2=0
GET M1,M1D2.
IF(M1D2.NE.30)STOP '?88114B1'
M1D1=31
1002 STORE M1 SUPPRESS AREA.
FIND CURRENT OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88115B1'
GET M1.
IF(M1D1.NE.11)STOP '?8871B1'
MODIFY.
O1C=2000
MOVE STATUS O1M1 SET TO IO1M1.
MOVE STATUS O1M2 SET TO IO1M2.
1003 STORE O1 SUPPRESS SET CURRENCY UPDATES.
MOVE STATUS O1M1 SET TO JO1M1.
MOVE STATUS O1M2 SET TO JO1M2.
IF(IO1M1.NE.JO1M1 .OR. IO1M2.NE.JO1M2)STOP '?8872B1'
FIND CURRENT OF RUN-UNIT.
IF(ERSTAT.NE.0)STOP '?88116B1'
M1D1=41
MOVE STATUS M1 RECORD TO IM1.
MOVE STATUS O1M1 SET TO IO1M1.
1004 STORE M1 SUPPRESS RECORD, O1M1 UPDATES.
MOVE STATUS M1 RECORD TO JM1.
MOVE STATUS O1M1 SET TO JO1M1.
IF(IM1.NE.JM1 .OR. IO1M1.NE.JO1M1)STOP '?8873B1'
M1D1=51
MOVE STATUS TESTA1 AREA TO IA1.
1005 STORE M1 SUPPRESS AREA O1M1 CURRENCY.
MOVE STATUS TESTA1 AREA TO JA1.
MOVE STATUS O1M1 SET TO JO1M1.
IF(IA1.NE.JA1 .OR. IO1M1.NE.JO1M1)STOP '?8874B1'
O1C=3000
MOVE STATUS O1 RECORD TO IO1.
MOVE STATUS O1M2 SET TO IO1M2.
1006 STORE O1 SUPPRESS RECORD SET CURRENCY UPDATES.
MOVE STATUS O1 RECORD TO JO1.
MOVE STATUS O1M1 SET TO JO1M1.
MOVE STATUS O1M2 SET TO JO1M2.
IF(IO1.NE.JO1 .OR. IO1M1.NE.JO1M1 .OR. IO1M2.NE.JO1M2)
1 STOP '?8875B1'
FIND CURRENT OF RUN-UNIT SUPPRESS O1M1.
IF(ERSTAT.NE.0)STOP '?88117B1'
M1D1=61
MOVE STATUS TESTA1 AREA TO IA1.
1007 STORE M1 SUPPRESS AREA SET CURRENCY.
MOVE STATUS TESTA1 AREA TO JA1.
MOVE STATUS O1M1 SET TO JO1M1.
IF(IA1.NE.JA1 .OR. IO1M1.NE.JO1M1) STOP '?8876B1'
FIND CURRENT OF RUN-UNIT.
IF(ERSTAT.NE.0)STOP '?88118B1'
1008 DELETE.
MOVE STATUS M1 RECORD TO IM1.
MOVE STATUS TESTA1 AREA TO IA1.
1009 STORE M1 SUPPRESS RECORD AREA CURRENCY UPDATES.
MOVE STATUS M1 RECORD TO JM1.
MOVE STATUS TESTA1 AREA TO JA1.
IF(IM1.NE.JM1 .OR. IA1.NE.JA1)STOP '?8877B1'
MOVE CURRENCY STATUS FOR O1M1 SET TO IO1M1.
MOVE CURRENCY STATUS FOR O1M2 SET TO IO1M2.
1010 STORE O1 SUPPRESS O1M1, O1M2 CURRENCY.
MOVE STATUS O1M1 SET TO JO1M1.
MOVE STATUS O1M2 SET TO JO1M2.
IF(IO1M1.NE.JO1M1 .OR. IO1M2.NE.JO1M2)STOP '?8878B1'
M1D1=71
MOVE STATUS TESTA1 AREA TO IA1.
1011 STORE M1 SUPPRESS RECORD, AREA, O1M1 UPDATES.
MOVE STATUS FOR TESTA1 AREA TO JA1.
MOVE STATUS M1 RECORD TO JM1.
MOVE STATUS O1M1 SET TO JO1M1.
IF(IA1.NE.JA1 .OR. IM1.NE.JM1 .OR. IO1M1.NE.JO1M1)STOP '?8879B1'
!CLEANUP FOR REST OF TEST
O1C=1000
FIND O1.
IF(ERSTAT.NE.0)STOP '?88119B1'
DELETE ALL.
O1C=2000
FIND O1.
IF(ERSTAT.NE.0)STOP '?88120B1'
DELETE MEMBERS.
DELETE.
O1C=3000
FIND O1.
IF(ERSTAT.NE.0)STOP '?88121B1'
DELETE.
FIND O1.
IF(ERSTAT.NE.0)STOP '?88122B1'
DELETE O1.
O1C=10
FIND O1 RECORD.
IF(ERSTAT.NE.0)STOP '?88123B1'
FIND NEXT RECORD OF O1M1 SET.
IF(ERSTAT.NE.0)STOP '?88124B1'
FIND NEXT RECORD OF O1M1 SET.
IF(ERSTAT.NE.0)STOP '?88125B1'
DELETE M1.
!ONE LAST STORE/SUPPRESS, MOVE CURRENCY CHECK, SETUP FOR LATER
M1D1=12
M1D2=M1D1
73 STORE M1.
MOVE STATUS FOR TESTA1 AREA TO I1.
STORE F1 SUPPRESS AREA UPDATES.
MOVE STATUS FOR TESTA1 AREA TO I2.
MOVE STATUS FOR RUN-UNIT TO J1.
FIND CURRENT OF RUN-UNIT.
IF(ERSTAT.NE.0)STOP '?88236B1'
MOVE CURRENCY STATUS FOR TESTA1 AREA TO J2.
IF (I1.NE.I2) STOP '?887B1'
IF (J1.NE.J2) STOP '?888B1'
IF (I1.EQ.J1) STOP '?889B1'
C ****************************
C * FIND CALC (RSE5) CASES *
C ****************************
74 O1C=23
O1D1=O1C
CALL CALCHN('O1')
K1=DBKEY
STORE O1.
K2=DBKEY
IF(K1/512.NE.K2/512)STOP '?88126B1'
O1C=10
CALL CALCHN('O1')
K1=DBKEY
MOVE STATUS TESTA1 AREA TO IA1.
MOVE STATUS O1 RECORD TO IO1.
MOVE STATUS O1M1 SET TO IO1M1.
FIND O1 SUPPRESS AREA, RECORD, O1M1 CURRENCY.
IF(ERSTAT.NE.0)STOP '?88237B1'
MOVE STATUS TESTA1 AREA TO JA1.
MOVE STATUS O1 RECORD TO JO1.
MOVE STATUS O1M1 SET TO JO1M1.
IF(IA1.NE.JA1)STOP '?88238B1'
IF(IO1.NE.JO1)STOP '?88239B1'
IF(IO1M1.NE.JO1M1)STOP '?88240B1'
K2=DBKEY
IF(K1/512.NE.K2/512)STOP '?88127B1'
IF (ERSTAT.NE.0) STOP '?8810B1'
O1C=0
GET O1.
IF (O1C.NE.10) STOP'?8811B1'
FIND DUPLICATE O1.
IF (ERSTAT.NE.326) STOP '?8812B1'
O1D1=11
75 STORE O1.
MOVE STATUS TESTA1 AREA TO IA1.
MOVE STATUS O1M1 SET TO IO1M1.
MOVE STATUS O1M2 SET TO IO1M2.
MOVE STATUS O1M3 SET TO IO1M3.
MOVE STATUS O1M4 SET TO IO1M4.
FIND O1 RECORD SUPPRESS AREA,SET CURRENCY UPDATES.
IF (ERSTAT.NE.0) STOP '?8813B1'
MOVE STATUS TESTA1 AREA TO JA1.
MOVE STATUS O1M1 SET TO JO1M1.
MOVE STATUS O1M2 SET TO JO1M2.
MOVE STATUS O1M3 SET TO JO1M3.
MOVE STATUS O1M4 SET TO JO1M4.
IF(IA1.NE.JA1)STOP '?88241B1'
IF(IO1M1.NE.JO1M1)STOP '?88242B1'
IF(IO1M2.NE.JO1M2)STOP '?88243B1'
IF(IO1M3.NE.JO1M3)STOP '?88244B1'
IF(IO1M4.NE.JO1M4)STOP '?88245B1'
MOVE STATUS TESTA1 AREA TO IA1.
MOVE STATUS O1 RECORD TO IO1.
MOVE STATUS O1M1 SET TO IO1M1.
MOVE STATUS O1M3 SET TO IO1M3.
* DBMS
FIND NEXT DUPLICATE WITHIN O1 RECORD SUPPRESS
AREA ,O1M1, RECORD, O1M3 UPDATES.
IF (ERSTAT.NE.0) STOP '?8814B1'
MOVE STATUS TESTA1 AREA TO JA1.
MOVE STATUS O1 RECORD TO JO1.
MOVE STATUS O1M1 SET TO JO1M1.
MOVE STATUS O1M3 SET TO JO1M3.
IF(IA1.NE.JA1)STOP '?88246B1'
IF(IO1.NE.JO1)STOP '?88247B1'
IF(IO1M1.NE.JO1M1)STOP '?88248B1'
IF(IO1M3.NE.JO1M3)STOP '?88249B1'
GET O1,O1C.
IF (O1C.NE.10) STOP '?8815B1'
C *******************************************
C * FIND DIRECT (RSE1) *
C * FIND [OWN] CURRENT (RSE2) COMPLICATED *
C * FIND OWNER (RSE4) *
C *******************************************
C I1=I2=DBKEY 2ND M1 IN 1ST O1
C J1=J2=DBKEY F1
76 FIND F1 USING J1.
IF (ERSTAT.NE.0) STOP '?8816B1'
FIND F1 USING I1.
IF (ERSTAT.NE.326) STOP '?8817B1'
FIND USING I1.
IF (ERSTAT.NE.0) STOP '?8818B1'
MOVE STATUS TESTA1 AREA TO IA1.
MOVE STATUS O1 RECORD TO IO1.
MOVE STATUS M1 RECORD TO IM1.
MOVE STATUS O1M1 SET TO IO1M1.
MOVE STATUS O1M2 SET TO IO1M2.
MOVE STATUS O1M3 SET TO IO1M3.
MOVE STATUS O1M4 SET TO IO1M4.
77 FIND OWNER O1M1 CURRENT O1M1 SET SUPPRESS RECORD,AREA,SET.
IF(ERSTAT.NE.0)STOP '?88250B1'
MOVE STATUS TESTA1 AREA TO JA1.
MOVE STATUS O1 RECORD TO JO1.
MOVE STATUS M1 RECORD TO JM1.
MOVE STATUS O1M1 SET TO JO1M1.
MOVE STATUS O1M2 SET TO JO1M2.
MOVE STATUS O1M3 SET TO JO1M3.
MOVE STATUS O1M4 SET TO JO1M4.
IF(IA1.NE.JA1)STOP '?88251B1'
IF(IO1.NE.JO1)STOP '?88252B1'
IF(IM1.NE.JM1)STOP '?88253B1'
IF(IO1M1.NE.JO1M1)STOP '?88254B1'
IF(IO1M2.NE.JO1M2)STOP '?88255B1'
IF(IO1M3.NE.JO1M3)STOP '?88256B1'
IF(IO1M4.NE.JO1M4)STOP '?88257B1'
IF (.NOT. OWNER(0)) STOP '?8819B1'
MOVE STATUS TESTA1 AREA TO IA1.
MOVE STATUS O1 RECORD TO IO1.
FIND OWNER O1M1 CURRENT TESTA1 AREA SUPPRESS RECORD.
IF(ERSTAT.NE.0)STOP '?88258B1'
MOVE STATUS TESTA1 AREA TO JA1.
MOVE STATUS O1 RECORD TO JO1.
IF(IO1.NE.JO1)STOP '?88260B1'
IF(IM1.NE.JM1)STOP '?88261B1'
MOVE STATUS M1 RECORD TO I3.
IF (I1.NE.I3) STOP '?8820B1' !INSURE OLD VALUE
MOVE STATUS O1M1 SET TO K1. !NOW CHK FIND CURR AND STRING MANIP
IF ('O1'.NE.RECNAM(1)) STOP '?8821B1'
1030 M4D1=99
M4D2=999
STORE M4.
INSERT INTO ALL SETS.
MOVE STATUS TESTA1 AREA TO IA1.
MOVE STATUS O1M1 SET TO IO1M1.
FIND LAST M1 RECORD OF TESTA1 AREA SUPPRESS O1M1, AREA CURRENCY UPDATES.
IF(ERSTAT.NE.0)STOP '?88217B1'
MOVE STATUS TESTA1 AREA TO JA1.
MOVE STATUS O1M1 SET TO JO1M1.
IF(IA1.NE.JA1)STOP '?88262B1'
IF(IO1M1.NE.JO1M1)STOP '?88263B1'
MOVE STATUS M1 RECORD TO IM1.
FIND M1 USING IM1.
IF(ERSTAT.NE.0)STOP '?88294B1'
FIND CURRENT OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88218B1'
MOVE STATUS TESTA1 AREA TO IA1.
IF(IM1.NE.IA1)STOP '?88219B1'
GET.
IF(M1D1.NE.12)STOP '?88220B1'
IF(M1D2.NE.12)STOP '?88221B1'
MOVE STATUS O1M1 SET TO IO1M1.
FIND OWNER IN O1M1 OF CURRENT OF M1 RECORD SUPPRESS O1M1.
IF(ERSTAT.NE.0)STOP '?88264B1'
MOVE STATUS O1M1 SET TO JO1M1.
IF(IO1M1.NE.JO1M1)STOP '?88265B1'
GET.
IF(O1C.NE.10)STOP '?88222B1'
IF(O1D1.NE.10)STOP '?88223B1'
MOVE STATUS RUN-UNIT TO IO1.
FIND FIRST M1 RECORD OF O1M1 SET.
IF(ERSTAT.NE.0)STOP '?88224B1'
FIND OWNER IN O1M1 CURRENT OF RUN-UNIT.
IF(ERSTAT.NE.0)STOP '?88225B1'
MOVE STATUS O1 RECORD TO JO1.
IF(IO1.NE.JO1)STOP '?88226B1'
FIND FIRST M4 RECORD OF O1M4 SET.
IF(ERSTAT.NE.0)STOP '?88227B1'
FIND OWNER IN F1M4 CURRENT OF O1M4 SET.
IF(ERSTAT.NE.0)STOP '?88228B1'
MOVE STATUS F1 RECORD TO J2.
IF(J1.NE.J2)STOP '?88229B1'
FIND CURRENT OF M4 RECORD.
IF(ERSTAT.NE.0)STOP '?88230B1'
FIND OWNER IN F1M4 CURRENT OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88231B1'
MOVE STATUS RUN-UNIT TO J2.
IF (J1.NE.J2)STOP '?88232B1'
FIND LAST M4 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88233B1'
REMOVE M4 FROM F1M4,O1M4.
DELETE.
78 FIND OWNER OF O1M1.
IF(ERSTAT.NE.0)STOP '?88128B1'
MOVE STATUS FOR O1M1 SET TO K2.
FIND M1 USING I1. !GET OWNER WHEN CURR OF SET IS MEM
IF(ERSTAT.NE.0)STOP '?88129B1'
FIND OWNER OF O1M1.
IF(ERSTAT.NE.0)STOP '?88266B1'
MOVE STATUS FOR O1M1 SET TO K3.
IF (K1.NE.K2) STOP '?8822B1'
IF (K1.NE.K3) STOP '?8823B1'
C ******************************************************
C * FIND NEXT/PRIOR/FIRST/LAST/OFFSET OF AREA (RSE3) *
C ******************************************************
OPEN TRANSACTION TRA1.
MOVE STATUS O1 RECORD TO IO1.
MOVE STATUS O1M3 SET TO IO1M3.
79 FIND FIRST RECORD TESTA1 AREA SUPPRESS O1M3, RECORD.
IF(ERSTAT.NE.0)STOP '?88267B1'
MOVE STATUS O1 RECORD TO JO1.
MOVE STATUS O1M3 SET TO JO1M3.
IF(IO1.NE.JO1)STOP '?88268B1'
IF(IO1M3.NE.JO1M3)STOP '?88269B1'
MOVE STATUS FOR TESTA1 AREA TO L1.
FIND PRIOR RECORD OF TESTA1 AREA. !VERIF REALLY AT 1ST
IF (ERSTAT.NE.307) STOP '?8824B1'
IF(IER.NE.307)STOP '?88194B1'
! NOW FIND ALL RECORDS
LCOUNT=0
11 FIND NEXT RECORD OF TESTA1 AREA.
LCOUNT=LCOUNT+1 !COUNTS FIND BEFORE 1 JUST DONE
IF (ERSTAT.NE.307) GOTO 11
IF (LCOUNT.NE.6) STOP '?8825B1' !THE NUM OF STORE STATS
710 MOVE STATUS FOR TESTA1 AREA TO L2.
MOVE STATUS O1M1 SET TO IO1M1.
MOVE STATUS O1M4 SET TO IO1M4.
FIND LAST RECORD OF TESTA1 AREA SUPPRESS O1M1, O1M4.
IF (ERSTAT.NE.0) STOP '?8826B1' !DON'T WANT NOOP TO BE REASON NEXT TEST SUCS
MOVE STATUS O1M1 SET TO JO1M1.
MOVE STATUS O1M4 SET TO JO1M4.
IF(IO1M1.NE.JO1M1)STOP '?88270B1'
IF(IO1M4.NE.JO1M4)STOP '?88271B1'
MOVE STATUS FOR TESTA1 AREA TO L3.
IF (L2.NE.L3) STOP '?8827B1'
12 FIND PRIOR RECORD OF TESTA1 AREA.
IF (ERSTAT.NE.307) GOTO 12
MOVE STATUS FOR TESTA1 AREA TO L4.
IF (L1.NE.L4) STOP '?8828B1'
MOVE STATUS O1 RECORD TO IO1.
MOVE STATUS O1M1 SET TO IO1M1.
MOVE STATUS O1M2 SET TO IO1M2.
MOVE STATUS O1M3 SET TO IO1M3.
MOVE STATUS O1M4 SET TO IO1M4.
711 FIND LCOUNT RECORD OF TESTA1 AREA SUPPRESS SET RECORD CURRENCY.
IF(ERSTAT.NE.0)STOP '?88272B1'
MOVE STATUS O1 RECORD TO JO1.
MOVE STATUS O1M1 SET TO JO1M1.
MOVE STATUS O1M2 SET TO JO1M2.
MOVE STATUS O1M3 SET TO JO1M3.
MOVE STATUS O1M4 SET TO JO1M4.
IF(IO1.NE.JO1)STOP '?88273B1'
IF(IO1M1.NE.JO1M1)STOP '?88274B1'
IF(IO1M2.NE.JO1M2)STOP '?88275B1'
IF(IO1M3.NE.JO1M3)STOP '?88276B1'
IF(IO1M4.NE.JO1M4)STOP '?88277B1'
MOVE STATUS FOR TESTA1 AREA TO L5.
IF (L2.NE.L5) STOP '?8829B1'
MOVE STATUS O1M1 SET TO IO1M1.
MOVE STATUS O1M2 SET TO IO1M2.
MOVE STATUS O1M3 SET TO IO1M3.
MOVE STATUS O1M4 SET TO IO1M4.
FIND -6 RECORD OF TESTA1 AREA SUPPRESS SET UPDATES.
IF(ERSTAT.NE.0)STOP '?88278B1'
MOVE STATUS O1M1 SET TO JO1M1.
MOVE STATUS O1M2 SET TO JO1M2.
MOVE STATUS O1M3 SET TO JO1M3.
MOVE STATUS O1M4 SET TO JO1M4.
IF(IO1M1.NE.JO1M1)STOP '?88279B1'
IF(IO1M2.NE.JO1M2)STOP '?88280B1'
IF(IO1M3.NE.JO1M3)STOP '?88281B1'
IF(IO1M4.NE.JO1M4)STOP '?88282B1'
MOVE STATUS FOR TESTA1 AREA TO L6.
IF (L1.NE.L6) STOP '?8830B1'
! SPEC A RECORD TYPE EXPLIC (& INVOLVE RANGE SCOPING IN FND.NA)
712 FIND FIRST M1 RECORD OF TESTA1 AREA.
IF (ERSTAT.NE.0) STOP '?8831B1'
FIND NEXT M1 RECORD OF TESTA1 AREA.
IF (ERSTAT.NE.0) STOP '?8832B1'
FIND NEXT M1 RECORD OF TESTA1 AREA. !KNOWN TO BE 2 M1'S, SO SHOULD FAIL
IF (ERSTAT.NE.307) STOP '?8833B1'
FIND LAST M1 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88198B1'
FIND PRIOR M1 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88199B1'
FIND PRIOR M1 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.307)STOP '?88200B1'
FIND 2 M1 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88201B1'
FIND NEXT M1 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.307)STOP '?88202B1'
FIND -1 M1 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88203B1'
FIND PRIOR M1 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88204B1'
CLOSE TRANSACTION TRA1.
C *****************************************************
C * FIND NEXT/PRIOR/FIRST/LAST/OFFSET OF SET (RES3) *
C *****************************************************
MOVE STATUS TESTA1 AREA TO IA1.
713 FIND FIRST RECORD O1M1 SET SUPPRESS AREA CURRENCY.
IF(ERSTAT.NE.0)STOP '?88130B1'
MOVE STATUS TESTA1 AREA TO JA1.
IF(IA1.NE.JA1)STOP '?88283B1'
MOVE STATUS FOR O1M1 SET TO N1.
FIND PRIOR RECORD OF O1M1 SET. !VERIF REALLY AT 1ST
IF (ERSTAT.NE.307) STOP '?8835B1'
! NOW FIND ALL RECORDS
NCOUNT=0
16 M1D1=2
M1D2=3
MODIFY M1,M1D2,M1D1.
M1D1=0
M1D2=0
GET M1,M1D1,M1D2.
IF (M1D1.NE.2 .OR. M1D2.NE.3) STOP '?8836B1'
FIND NEXT RECORD OF O1M1 SET.
NCOUNT=NCOUNT+1 !COUNTS FIND BEFORE 1 JUST DONE
IF (ERSTAT.NE.307) GOTO 16
IF (NCOUNT.NE.2) STOP '?8837B1' !THE NUM OF STORE STATS
OPEN TRANSACTION TRA1.
714 MOVE STATUS FOR O1M1 SET TO N2.
! VERIFY FIND OF PRIOR REC USING OB.CPRI
FIND PRIOR RECORD OF O1M1 SET.
IF(ERSTAT.NE.0)STOP '?88284B1'
MOVE STATUS FOR O1M1 SET TO N3.
IF (N1.NE.N3) STOP '?8837AB1'
! VERIF FIND LAST (AGAINST LAST OF 16-LOOP)
FIND LAST RECORD OF O1M1 SET.
IF (ERSTAT.NE.0) STOP '?8838B1' !DON'T WANT NOOP TO BE REASON NEXT TEXT SUCS
MOVE STATUS FOR O1M1 SET TO N3.
IF (N2.NE.N3) STOP '?8839B1'
17 FIND PRIOR RECORD OF O1M1 SET.
IF (ERSTAT.NE.307) GOTO 17
MOVE STATUS FOR O1M1 SET TO N4.
IF (N1.NE.N4) STOP '?8840B1'
MOVE STATUS TESTA1 AREA TO IA1.
MOVE STATUS O1 RECORD TO IO1.
MOVE STATUS M1 RECORD TO IM1.
715 FIND NCOUNT RECORD OF O1M1 SET SUPPRESS AREA RECORD UPDATES.
IF(ERSTAT.NE.0)STOP '?88285B1'
MOVE STATUS TESTA1 AREA TO JA1.
MOVE STATUS O1 RECORD TO JO1.
MOVE STATUS M1 RECORD TO JM1.
IF(IA1.NE.JA1)STOP '?88286B1'
IF(IO1.NE.JO1)STOP '?88287B1'
IF(IM1.NE.JM1)STOP '?88288B1'
MOVE STATUS FOR O1M1 SET TO N5.
IF (N2.NE.N5) STOP '?8841B1'
FIND -2 RECORD OF O1M1 SET.
IF(ERSTAT.NE.0)STOP '?88289B1'
MOVE STATUS FOR O1M1 SET TO N6.
IF (N1.NE.N6) STOP '?8842B1'
CLOSE TRANSACTION.
! SPEC A REC TYPE EXPLIC
716 FIND FIRST M1 RECORD OF O1M1 SET.
IF (ERSTAT.NE.0) STOP '?8843B1'
REMOVE FROM ALL.
FIND NEXT M1 RECORD OF O1M1 SET.
IF (ERSTAT.NE.0) STOP '?8844B1'
FIND NEXT M1 RECORD OF O1M1 SET. !KNOWN TO BE 2 M1'S, SO SHOULD FAIL
IF (ERSTAT.NE.307) STOP '?8845B1'
REMOVE M1 FROM O1M1.
FIND NEXT RECORD OF O1M1 SET.
IF (ERSTAT.NE.326) STOP '?8846B1'
IF(IER.NE.326)STOP '?88195B1'
FIND FIRST M1 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88210B1'
INSERT INTO ALL SETS.
FIND NEXT M1 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88211B1'
INSERT INTO O1M1.
FIND LAST M1 RECORD OF O1M1 SET.
IF(ERSTAT.NE.0)STOP '?88205B1'
FIND PRIOR M1 RECORD O1M1 SET.
IF(ERSTAT.NE.0)STOP '?88206B1'
FIND PRIOR M1 RECORD O1M1 SET.
IF(ERSTAT.NE.307)STOP '?88207B1'
FIND 2 M1 RECORD OF O1M1 SET.
IF(ERSTAT.NE.0)STOP '?88208B1'
FIND NEXT M1 RECORD OF O1M1 SET.
IF(ERSTAT.NE.307)STOP '?88209B1'
FIND -1 M1 RECORD O1M1 SET.
IF(ERSTAT.NE.0)STOP '?88210B1'
REMOVE FROM O1M1.
FIND PRIOR M1 RECORD O1M1 SET.
IF(ERSTAT.NE.0)STOP '?88211B1'
REMOVE FROM ALL.
C ***************************************************
C * FIND SORTED (RSE6) SORTED/UNSORTED, AND FINS6 *
C * PLUS ASSORTED INSERTS AND REMOVES *
C ***************************************************
1050 FIND FIRST F1 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88131B1'
O1C=10
FIND O1 RECORD.
IF(ERSTAT.NE.0)STOP '?88290B1'
M3D1=100
STORE M3.
M3D1=200
STORE M3.
M3D1=150
STORE M3.
M4D1=1000
M4D2=10
STORE M4.
INSERT INTO ALL.
M4D2=20
STORE M4.
INSERT M4 INTO ALL.
M4D1=2000
M4D2=10
STORE M4.
INSERT M4 INTO O1M4,F1M4.
M4D2=20
STORE M4.
INSERT INTO F1M4.
M4D2=30
STORE M4.
INSERT INTO O1M4.
1051 O1C=23
FIND O1 RECORD.
IF(ERSTAT.NE.0)STOP '?88291B1'
M3D1=75
STORE M3.
M3D1=200
STORE M3.
M4D1=1000
M4D2=40
STORE M4.
INSERT M4 INTO ALL SETS.
M4D2=50
STORE M4.
INSERT M4 INTO O1M4.
M4D1=2000
M4D2=40
STORE M4.
INSERT M4 INTO ALL.
M4D1=3000
M4D2=10
STORE M4.
M4D2=20
STORE M4.
INSERT M4 INTO ALL.
O1C=10
C EXACT (NON RANGE) FINDS, SORTED, SINGLE KEY
1052 FIND O1.
IF(ERSTAT.NE.0)STOP '?88139B1'
M3D1=150
FIND M3 VIA CURRENT OF O1M3 USING M3D1.
IF(ERSTAT.NE.0)STOP '?88140B1'
M3D1=75
FIND M3 VIA CURRENT OF O1M3 USING M3D1.
IF(ERSTAT.NE.326)STOP '?88141B1'
1053 O1C=23
FIND O1 RECORD.
IF(ERSTAT.NE.0)STOP '?88142B1'
FIND M3 VIA CURRENT OF O1M3 USING M3D1.
IF(ERSTAT.NE.0)STOP '?88143B1'
CALL FINS6('M3','O1M3')
IF(ERSTAT.NE.0)STOP '?88144B1'
C RANGE CASE FINDS, SORTED, MULTI KEY
1054 M4D1=1000
M4D2=60
FIND M4 VIA CURRENT O1M4 USING M4D1,M4D2.
IF(ERSTAT.NE.0)STOP '?88145B1'
IF(ERDATA.NE.2)STOP '?88146B1'
GET M4.
IF(M4D1.NE.2000)STOP '?88147B1'
IF(M4D2.NE.40)STOP '?88148B1'
M4D1=3000
M4D2=0
FIND M4 VIA CURRENT OF O1M4 USING M4D1,M4D2.
IF(ERSTAT.NE.0)STOP '?88149B1'
IF(ERDATA.NE.1)STOP '?88150B1'
GET M4 M4D1,M4D2.
IF(M4D1.NE.3000)STOP '?88151B1'
IF(M4D2.NE.20)STOP '?88152B1'
C BOUNDARY AND EMPTY CHECKS
M4D2=30
FIND M4 VIA CURRENT O1M4 USING M4D1,M4D2.
IF(ERSTAT.NE.307)STOP '?88153B1'
M3D1=10
FIND M3 VIA CURRENT O1M3 USING M3D1.
IF(ERSTAT.NE.326)STOP '?88154B1'
1055 O1C=10
FIND O1.
IF(ERSTAT.NE.0)STOP '?88155B1'
FIND DUPLICATE O1.
IF(ERSTAT.NE.0)STOP '?88156B1'
FIND M3 VIA CURRENT O1M3 USING M3D1.
IF(ERSTAT.NE.326)STOP '?88157B1'
FIND M4 VIA CURRENT O1M4 USING M4D1,M4D2.
IF(ERSTAT.NE.307)STOP '?88158B1'
C SORTED, NON SORTED FINDS SAME SET OCC
1056 FIND O1. !BACK TO 1ST OCC
IF(ERSTAT.NE.0)STOP '?88196B1'
FIND OWNER F1M4 SET.
IF(ERSTAT.NE.0)STOP '?88197B1'
M4D1=2000
M4D2=10
FIND M4 VIA CURRENT O1M4 USING M4D1,M4D2 SUPPRESS SET.
IF(ERSTAT.NE.0)STOP '?88159B1'
IF(ERDATA.NE.0)STOP '?88160B1'
GET M4.
IF(M4D1.NE.2000)STOP '?88161B1'
IF(M4D2.NE.10)STOP '?88162B1'
FIND M4 VIA CURRENT F1M4 USING M4D1,M4D2 SUPPRESS SET.
IF(ERSTAT.NE.0)STOP '?88163B1'
GET.
IF(M4D1.NE.2000)STOP '?88164B1'
IF(M4D2.NE.10)STOP '?88165B1'
M4D2=20
FIND M4 VIA CURRENT F1M4 USING M4D1,M4D2. !FROM SET PREV
IF(ERSTAT.NE.0)STOP '?88166B1'
GET M4.
IF(M4D1.NE.2000)STOP '?88167B1'
IF(M4D2.NE.20)STOP '?88168B1'
FIND M4 VIA CURRENT O1M4 USING M4D1,M4D2 SUPPRESS SET.
IF(ERSTAT.NE.0)STOP '?88169B1'
IF(ERDATA.NE.2)STOP '?88170B1'
GET M4.
IF(M4D1.NE.2000)STOP '?88171B1'
IF(M4D2.NE.30)STOP '?88172B1'
FIND M4 VIA CURRENT F1M4 USING M4D1,M4D2.
IF(ERSTAT.NE.307)STOP '?88173B1'
CALL FINS6('M4','O1M4')
IF(ERSTAT.NE.0)STOP '?88174B1'
1057 M4D1=1000
M4D2=30
FIND M4 VIA CURRENT O1M4 USING M4D1. !1 KEY DEFS FND 3
IF(ERSTAT.NE.307)STOP '?88175B1'
FIND OWNER O1M4 SET.
IF(ERSTAT.NE.0)STOP '?88176B1'
FIND OWNER F1M4 SET.
IF(ERSTAT.NE.0)STOP '?88177B1'
FIND M4 VIA CURRENT O1M4 USING M4D1.
IF(ERSTAT.NE.0)STOP '?88178B1'
GET.
IF(M4D1.NE.1000)STOP '?88179B1'
IF(M4D2.NE.10)STOP '?88180B1'
FIND M4 VIA CURRENT F1M4 USING M4D1.
IF(ERSTAT.NE.0)STOP '?88181B1'
GET.
IF(M4D1.NE.1000)STOP '?88182B1'
IF(M4D2.NE.20)STOP '?88183B1'
C CLEANUP
1058 FIND OWNER O1M4 SET.
IF(ERSTAT.NE.0)STOP '?88184B1'
DELETE MEMBERS FROM O1M3.
FIND FIRST RECORD OF O1M4 SET.
IF(ERSTAT.NE.0)STOP '?88185B1'
REMOVE FROM ALL.
DELETE.
FIND NEXT RECORD OF O1M4 SET.
IF(ERSTAT.NE.0)STOP '?88186B1'
REMOVE M4 FROM ALL.
DELETE M4.
FIND NEXT RECORD OF F1M4 SET.
IF(ERSTAT.NE.0)STOP '?88187B1'
REMOVE M4 FROM ALL SETS.
DELETE.
FIND NEXT RECORD OF F1M4 SET.
IF(ERSTAT.NE.0)STOP '?88188B1'
REMOVE M4 FROM F1M4.
DELETE.
FIND NEXT RECORD OF O1M4 SET.
IF(ERSTAT.NE.0)STOP '?88189B1'
REMOVE M4 FROM O1M4.
DELETE.
1059 O1C=23
FIND O1.
IF(ERSTAT.NE.0)STOP '?88190B1'
FIND NEXT RECORD OF F1M4 SET.
IF(ERSTAT.NE.0)STOP '?88191B1'
REMOVE FROM O1M4,F1M4.
DELETE.
FIND NEXT RECORD OF O1M4 SET.
IF(ERSTAT.NE.0)STOP '?88192B1'
REMOVE M4 FROM ALL SETS.
DELETE.
FIND NEXT RECORD OF O1M4 SET.
IF(ERSTAT.NE.0)STOP '?88193B1'
REMOVE M4 FROM F1M4,O1M4.
DELETE.
FIND LAST RECORD OF O1M4 SET.
IF(ERSTAT.NE.0)STOP '?88214B1'
REMOVE M4 FROM ALL.
DELETE.
FIND LAST M4 RECORD OF TESTA1 AREA.
IF(ERSTAT.NE.0)STOP '?88215B1'
DELETE.
FIND OWNER OF O1M4 SET.
IF(ERSTAT.NE.0)STOP '?88216B1'
DELETE MEMBERS FROM O1M3.
C ****************************************************
C * DELETES, HANDLED FROM SUBS WITH 2ND SUB-SCHEMA *
C * TRIVIAL CASE DONE THROUGHOUT MAIN PROGRAM *
C ****************************************************
CALL DTVRB2 !INIT
CALL DELCAS(1) !DELETE RECORD THEN DELETE ALL
CALL DELCAS(2) !DELETE SELECTIVE
CALL DELCAS(3) !DELETE RECORD ONLY
CALL DELCAS(4) !DELETE MEMBERS
C MAKE SURE ORIG SUB-SCHEMA NOT AFFECTED
O1C=10
FIND O1 RECORD.
IF(ERSTAT.NE.0)STOP '?88132B1'
GET O1 O1D1.
DELETE ALL.
CALL DELCAS(5) !DELETE RECORD ALL MEMBERS
CALL DELCAS(6) !DELETE RECORD SELECTIVE MEMBERS
OPEN TRANSACTION TUA1.
FIND NEXT DUPLICATE WITHIN O1 RECORD.
IF(ERSTAT.NE.0)STOP '?88292B1'
DELETE ALL.
CLOSE TRANSACTION.
CALL DELCAS(7) !DELETE RECORD ONLY MEMBERS
CALL DELCAS(8) !DELETE RECORD SELECTIVE MEMBERS SET
CALL DELCAS(9) !DELETE RECORD ONLY MEMBERS SET1,SET2
CALL DELCAS(10) !CLOSE AREA
O1C=23
FIND O1.
IF(ERSTAT.NE.0)STOP '?88293B1'
DELETE MEMBERS.
DELETE O1.
99 CLOSE AREA TESTA1.
CLOSE JOURNAL.
CALL STATS
TYPE 9992
9992 FORMAT(' [Completed basic DML tests]')
* DBMS
END DTVRB1.
SUBROUTINE EUMR1
* DBMS
ACCESS SUB-SCHEMA DTSSV1 OF SCHEMA DTVRB
PRIVACY KEY COMPILE BOGUS.
CALL EUMR(ERSTAT)
RETURN
*DBMS
END EUMR1.
SUBROUTINE EUMR2
* DBMS
ACCESS SUB-SCHEMA DTSSV2 OF SCHEMA DTVRB
PRIVACY KEY COMPILE B2.
CALL EUMR(ERSTAT)
RETURN
*DBMS
END EUMR2.
SUBROUTINE EUMR(ERSTAT)
C PROCESS ALL UMR (**09) EXCEPTIONS
INTEGER ERSTAT
COMMON IER,IGN
IF((ERSTAT-((ERSTAT/100)*100)).NE.9)GO TO 2020
IF(ERSTAT.NE.209 .AND. ERSTAT.NE.809)GO TO 2030
IF(IGN.NE.209 .AND. IGN.NE.809)GO TO 2040
IER=ERSTAT
RETURN
2020 TYPE 2025,ERSTAT
2025 FORMAT(' ?TRAPPING EXCEPTION **09, RECEIVED ',I5)
STOP
2030 TYPE 2035,ERSTAT
2035 FORMAT(' ?EXPECTING EXCEPTION 0209 OR 0809, RECEIVED ',I5)
STOP
2040 TYPE 2045,ERSTAT
2045 FORMAT(' ?UNEXPECTED EXCEPTION ',I5)
STOP
* DBMS
END EUMR.
SUBROUTINE EEON1
* DBMS
ACCESS SUB-SCHEMA DTSSV1 OF SCHEMA DTVRB
PRIVACY KEY FOR COMPILE IS BOGUS.
CALL EEON(ERSTAT)
RETURN
* DBMS
END EEON1.
SUBROUTINE EEON2
* DBMS
ACCESS SUB-SCHEMA DTSSV2 OF SCHEMA DTVRB
PRIVACY KEY FOR COMPILE IS B2.
CALL EEON(ERSTAT)
RETURN
* DBMS
END EEON2.
SUBROUTINE EEON(ERSTAT)
C PROCESS ESA (0307) AND NRS (0326) ONLY
INTEGER ERSTAT
COMMON IER,IGN
IF(ERSTAT.NE.307 .AND. ERSTAT.NE.326)GO TO 3020
IF(IGN.NE.0 .AND. IGN.NE.ERSTAT)GO TO 3030
IER=ERSTAT
RETURN
3020 TYPE 3025,ERSTAT
3025 FORMAT(' ?TRAPPING EXCEPTION 307 OR 326, RECEIVED ',I5)
STOP
3030 TYPE 3035,ERSTAT
3035 FORMAT(' ?UNEXPECTED EXCEPTION ',I5)
STOP
* DBMS
END EEON.
SUBROUTINE EDEL1
* DBMS
ACCESS SUB-SCHEMA DTSSV1 OF DTVRB.
CALL EDEL(ERSTAT)
RETURN
* DBMS
END EDEL1.
SUBROUTINE EDEL2
* DBMS
ACCESS SUB-SCHEMA DTSSV2 OF DTVRB PRIVACY KEY COMPILE B2.
CALL EDEL(ERSTAT)
RETURN
* DBMS
END EDEL2.
SUBROUTINE EDEL(ERSTAT)
C PROCESS ANY DELETE VERB (02**) ERROR
INTEGER ERSTAT
COMMON IER,IGN
IF(ERSTAT.LT.200 .OR. ERSTAT.GT.299)GO TO 4020
IF(ERSTAT.NE.230)GO TO 4030
IF(ERSTAT.NE.IGN)GO TO 4040
IER=230
RETURN
4020 TYPE 4025,ERSTAT
4025 FORMAT(' ?TRAPPING EXCEPTION 02**, RECEIVED ',I5)
STOP
4030 TYPE 4035,ERSTAT
4035 FORMAT(' ?EXPECTING EXCEPTION 0230, RECEIVED ',I5)
STOP
4040 TYPE 4045
4045 FORMAT(' ?UNEXPECTED EXCEPTION 0230')
STOP
* DBMS
END EDEL.
SUBROUTINE EGEN1
* DBMS
ACCESS DTSSV1 OF SCHEMA DTVRB.
CALL EGEN(ERSTAT)
RETURN
* DBMS
END EGEN1.
SUBROUTINE EGEN2
* DBMS
ACCESS DTSSV2 OF SCHEMA DTVRB PRIVACY KEY COMPILE B2.
CALL EGEN(ERSTAT)
RETURN
* DBMS
END EGEN2.
SUBROUTINE EGEN(ERSTAT)
C HANDLE ALL EXCEPS NOT HANDLED ABOVE
INTEGER ERSTAT
COMMON IER,IGN
IF(ERSTAT.NE.IGN)GO TO 5020
IER=ERSTAT
RETURN
5020 TYPE 5025,ERSTAT
5025 FORMAT(' ?UNEXPECTED EXCEPTION ',I5)
STOP
* DBMS
END EGEN.