Trailing-Edge
-
PDP-10 Archives
-
DBMS-20_V6.0_bin_9-25-81
-
sources/thefoi.fml
There are 2 other files named thefoi.fml in the archive. Click here to see a list.
PROGRAM INIT
IMPLICIT INTEGER (A-Z)
LOGICAL INVKEY, ENDSET, SIMDEL, OK, EXMS, DONE
COMMON /ERBLK/ INVKEY, ENDSET, SIMDEL, OK, DONE
COMMON /EX/ EXMS
COMMON /UTIL/ FUNCTN
C *******************************************************************
C * *
C * copyright (c) 1980 DIGITAL Equipment Corporation *
C * *
C * This program is for instructional purposes only; in order to *
C * illustrate certain aspects of this software, this program may *
C * contain constructs and practices that would not be suitable *
C * for use in a production environment. DIGITAL Equipment Cor- *
C * poration assumes no responsibility for any errors which may *
C * exist in this program. *
C * *
C * This program was written by software documentation staff in *
C * order to best explain concepts involved in using the DBMS DML. *
C * As such, the primary consideration was writing code that is, *
C * for the most part, as simple as possible. Consequently, the *
C * approach taken was to write in-line code because, for the most *
C * part, it can be easier to understand, albeit harder to main- *
C * tain. *
C * *
C * A second major factor in the writing of this program was that *
C * only one program could be written. This constraint was added *
C * because the theme example programs are included on the dis- *
C * tribution tape and we could only include one program there. *
C * Consequently, the procedure shown here where everything is in- *
C * cluded in one program is not one that should be followed by *
C * users performing similiar kinds of functions. *
C * *
C * Also, this program was written solely to demonstrate a dis- *
C * series of functions. While all these functions work, they *
C * were not given the kind of load and performance testing that *
C * should be, or are, given to true application software. *
C * *
C *******************************************************************
*DBMS
INVOKE SUB-SCHEMA Fortran-System-Programmer-SS OF SCHEMA Theme
PRIVACY KEY FOR COMPILE IS ACEDB.
*DBMS
USE ERRTN IF ERSTAT.
EXMS = .TRUE.
*DBMS
OPEN AREA Head-Area
USAGE-MODE IS EXCLUSIVE UPDATE
PRIVACY KEY IS N1234.
IF (ERSTAT .EQ. 0) GO TO 1
TYPE 2
2 FORMAT (' Not able to open Head-Area.')
GO TO 999
1 CONTINUE
*DBMS
OPEN AREA Index-Block-Area
USAGE-MODE IS EXCLUSIVE UPDATE
PRIVACY KEY IS N1234.
IF (ERSTAT .EQ. 0) GO TO 3
TYPE 4
4 FORMAT (' Not able to open Index-Block-area.')
GO TO 999
3 CONTINUE
*DBMS
OPEN AREA Inventory-Area
USAGE-MODE IS EXCLUSIVE UPDATE
PRIVACY KEY IS N1234.
IF (ERSTAT .EQ. 0) GO TO 5
TYPE 6
6 FORMAT (' Not able to open Inventory-Area.')
GO TO 999
5 CONTINUE
*DBMS
OPEN AREA Manufacturing-Area
USAGE-MODE IS EXCLUSIVE UPDATE
PRIVACY KEY IS N1234.
IF (ERSTAT .EQ. 0) GO TO 7
TYPE 8
8 FORMAT (' Not able to open Manufacturing-Area.')
GO TO 999
7 CONTINUE
*DBMS
OPEN AREA Orders-Area
USAGE-MODE IS EXCLUSIVE UPDATE
PRIVACY KEY IS N1234.
IF (ERSTAT .EQ. 0) GO TO 9
TYPE 88
88 FORMAT (' Not able to open Orders-Area.')
GO TO 999
9 CONTINUE
*DBMS
OPEN AREA Personnel-Area
USAGE-MODE IS EXCLUSIVE UPDATE
PRIVACY KEY IS N1234.
IF (ERSTAT .EQ. 0) GO TO 10
TYPE 11
11 FORMAT (' Not able to open Personnel-Area.')
GO TO 999
10 CONTINUE
*DBMS
OPEN AREA Personal-Area
USAGE-MODE IS EXCLUSIVE UPDATE
PRIVACY KEY IS N1234.
IF (ERSTAT .EQ. 0) GO TO 21
TYPE 22
22 FORMAT (' Not able to open Personal-Area')
GO TO 999
21 CONTINUE
*DBMS
OPEN AREA TEMPORARY-AREA
USAGE-MODE IS EXCLUSIVE UPDATE
PRIVACY KEY IS N1234.
IF (ERSTAT .EQ. 0) GO TO 24
TYPE 23
23 FORMAT ('NOT ABLE TO OPEN TEMPORARY-AREA')
GO TO 999
C* Initialize. *
24 CONTINUE
OHDUM = -1
OHNUM = 0
*DBMS
STORE Number-of-Last-Order-Rec.
IF (ERSTAT .EQ. 0) GO TO 200
TYPE 100
100 FORMAT (' Number of last order record not stored')
GO TO 999
200 TYPE 210
210 FORMAT (' NUMBER-OF-LAST-ORDER-REC STORED')
CHDUM = -1
CHNUM = 0
*DBMS
STORE Cust-Head-Rec.
IF (ERSTAT .EQ. 0) GO TO 400
TYPE 300
300 FORMAT (' Cust-Head not stored.')
GO TO 999
400 TYPE 500
500 FORMAT (' Cust-head stored.')
EHDUM = -1
EHNUM = 0
*DBMS
STORE Employee-Head-Rec.
IF (ERSTAT .EQ. 0) GO TO 700
TYPE 600
600 FORMAT (' Employee-Head not stored.')
GO TO 999
700 TYPE 800
800 FORMAT (' Employee-Head stored.')
PRDUM = -1
PRNUM = 0
*DBMS
STORE Part-Head-Rec.
IF (ERSTAT .EQ. 0) GO TO 1000
TYPE 900
900 FORMAT (' Part-Head not stored')
GO TO 999
1000 TYPE 1100
1100 FORMAT (' Part-Head stored.')
PHDUM = -1
PHNUM = 0
*DBMS
STORE Purchase-Order-Head-Rec.
IF (ERSTAT .EQ. 0) GO TO 1300
TYPE 1200
1200 FORMAT (' Purchase-Order-Head not stored.')
GO TO 999
1300 TYPE 1310
1310 FORMAT (' PURCHASE-ORDER-HEAD-REC STORED')
WHDUM = -1
WHNUM = 0
*DBMS
STORE Work-Order-Head-Rec.
IF (ERSTAT .EQ. 0) GO TO 1500
TYPE 1400
1400 FORMAT (' Work-Order-Head not stored')
GO TO 999
1500 TYPE 1600
1600 FORMAT (' Work-Order-Head stored.')
999 CONTINUE
*DBMS
CLOSE RUN-UNIT.
*DBMS
CLOSE JOURNAL.
*DBMS
END INIT.
SUBROUTINE ERRTN
C*******************************************************************************
C* *
C* E R R T N *
C* *
C* FORTRAN USE procedure. *
C* *
C*******************************************************************************
IMPLICIT INTEGER (A-Z)
LOGICAL INVKEY, ENDSET, SIMDEL, OK, EXMS, DONE, FINAL
COMMON /EX/ EXMS
COMMON /ERBLK/ INVKEY, ENDSET, SIMDEL, OK, DONE
INTEGER VMSGS (51)
*DBMS
ACCESS SUB-SCHEMA Fortran-System-Programmer-SS OF SCHEMA Theme
PRIVACY KEY FOR COMPILE IS ACEDB.
DATA (VMSGS(I),I=1,51)/'Host ','Verbs',' ',
1 'Close',' Erro','r ', 'Delet','e Err','or ',
3 'Find ','Error',' ', ' ',' ',' ',
5 'Get E','rror ',' ', ' ',' ',' ',
7 'Inser','t Err','or ', 'Modif','y Err','or ',
9 'Open ','Error',' ', ' ',' ',' ',
1 'Remov','e Err','or ', 'Store',' Erro','r ',
3 ' ',' ',' ', ' ',' ',' ',
5 'Bind ','Error',' ', 'Call ','Error',' '/
INVKEY = .FALSE.
ENDSET = .FALSE.
SIMDEL = .FALSE.
OK = .FALSE.
IF (ERSTAT .NE. 240) GO TO 101
SIMDEL = .TRUE.
GO TO 999
101 IF (ERSTAT .NE. 307) GO TO 102
ENDSET = .TRUE.
GO TO 999
102 IF (ERSTAT .NE. 326) GO TO 103
INVKEY = .TRUE.
GO TO 999
103 IF (.NOT. EXMS) GO TO 998
VERB = ERSTAT / 100
MSG = ERSTAT - VERB*100
TYPE 104,(VMSGS((VERB-1)*3-1+I),I=1,3)
104 FORMAT (1X,3A5)
IF (VERB .EQ. 0 .OR. VERB .EQ. 1 .OR. VERB .EQ. 9) DONE = .TRUE.
IF (VERB .EQ. 15 .OR. VERB .EQ. 16) DONE = .TRUE.
IF (MSG .NE. 0) GO TO 801
TYPE 105
GO TO 998
801 IF (MSG .NE. 1) GO TO 802
TYPE 1
GO TO 998
802 IF (MSG .NE. 2) GO TO 803
TYPE 2
GO TO 998
803 IF (MSG .NE. 3) GO TO 804
TYPE 3
GO TO 998
804 IF (MSG .NE. 4) GO TO 805
TYPE 4
GO TO 998
805 IF (MSG .NE. 5) GO TO 806
TYPE 5
GO TO 998
806 IF (MSG .NE. 6) GO TO 807
TYPE 6
GO TO 998
807 IF (MSG .NE. 7) GO TO 808
TYPE 7
GO TO 998
808 IF (MSG .NE. 8) GO TO 809
TYPE 8
GO TO 998
809 IF (MSG .NE. 9) GO TO 810
TYPE 9
GO TO 998
810 IF (MSG .NE. 10) GO TO 811
TYPE 10
GO TO 998
811 IF (MSG .NE. 11) GO TO 812
TYPE 11
GO TO 998
812 IF (MSG .NE. 12) GO TO 813
TYPE 12
GO TO 998
813 IF (MSG .NE. 13) GO TO 814
TYPE 13
GO TO 998
814 IF (MSG .NE. 14) GO TO 815
TYPE 14
GO TO 998
815 IF (MSG .NE. 15) GO TO 816
TYPE 15
GO TO 998
816 IF (MSG .NE. 16) GO TO 817
TYPE 16
GO TO 998
817 IF (MSG .NE. 17) GO TO 818
TYPE 17
GO TO 998
818 IF (MSG .NE. 18) GO TO 819
TYPE 18
GO TO 998
819 IF (MSG .NE. 19) GO TO 820
C NO ERROR 19
GO TO 998
820 IF (MSG .NE. 20) GO TO 821
TYPE 20
GO TO 998
821 IF (MSG .NE. 21) GO TO 822
C NO ERROR 21
GO TO 998
822 IF (MSG .NE. 22) GO TO 823
TYPE 22
GO TO 998
823 IF (MSG .NE. 23) GO TO 824
TYPE 23
GO TO 998
824 IF (MSG .NE. 24) GO TO 825
TYPE 24
GO TO 998
825 IF (MSG .NE. 25) GO TO 826
TYPE 25
GO TO 998
826 IF (MSG .NE. 26) GO TO 827
TYPE 26
GO TO 998
827 IF (MSG .NE. 27) GO TO 828
C NO ERROR 27
GO TO 998
828 IF (MSG .NE. 28) GO TO 829
TYPE 28
GO TO 998
829 IF (MSG .NE. 29) GO TO 830
C NO ERROR 29
GO TO 998
830 IF (MSG .NE. 30) GO TO 831
TYPE 30
GO TO 998
831 IF (MSG .NE. 31) GO TO 832
TYPE 31
GO TO 998
832 IF (MSG .NE. 32) GO TO 833
TYPE 32
GO TO 998
833 IF (MSG .NE. 33) GO TO 834
TYPE 33
GO TO 998
834 IF (MSG .NE. 34) GO TO 835
TYPE 34
GO TO 998
835 IF (MSG .NE. 35) GO TO 836
TYPE 35
GO TO 998
836 IF (MSG .NE. 36) GO TO 837
TYPE 36
GO TO 998
837 IF (MSG .NE. 37) GO TO 838
TYPE 37
GO TO 998
838 IF (MSG .NE. 38) GO TO 839
TYPE 38
GO TO 998
839 IF (MSG .NE. 39) GO TO 840
TYPE 39
GO TO 998
840 IF (MSG .NE. 40) GO TO 841
TYPE 40
GO TO 998
841 IF (MSG .NE. 41) GO TO 842
TYPE 41
GO TO 998
842 IF (MSG .NE. 42) GO TO 843
TYPE 42
GO TO 998
843 IF (MSG .NE. 43) GO TO 844
TYPE 43
GO TO 998
844 IF (MSG .NE. 44) GO TO 845
TYPE 44
GO TO 998
845 IF (MSG .NE. 45) GO TO 846
TYPE 45
GO TO 998
846 IF (MSG .NE. 46) GO TO 847
C NO ERROR 46
GO TO 998
847 IF (MSG .NE. 47) GO TO 848
C NO ERROR 47
GO TO 998
848 IF (MSG .NE. 48) GO TO 849
C NO ERROR 48
GO TO 998
849 IF (MSG .NE. 49) GO TO 850
C NO ERROR 49
GO TO 998
850 IF (MSG .NE. 50) GO TO 851
C NO ERROR 50
GO TO 998
851 IF (MSG .NE. 51) GO TO 852
C NO ERROR 51
GO TO 998
852 IF (MSG .NE. 52) GO TO 853
C NO ERROR 52
GO TO 998
853 IF (MSG .NE. 53) GO TO 854
C NO ERROR 53
GO TO 998
854 IF (MSG .NE. 54) GO TO 855
C NO ERROR 54
GO TO 998
855 IF (MSG .NE. 55) GO TO 856
TYPE 55
GO TO 998
856 IF (MSG .NE. 56) GO TO 857
TYPE 56
GO TO 998
857 IF (MSG .NE. 57) GO TO 858
TYPE 57
GO TO 998
858 IF (MSG .NE. 58) GO TO 859
TYPE 58
GO TO 998
859 IF (MSG .NE. 59) GO TO 860
TYPE 59
GO TO 998
860 IF (MSG .NE. 60) GO TO 861
TYPE 60
GO TO 998
861 IF (MSG .NE. 61) GO TO 862
TYPE 61
GO TO 998
862 IF (MSG .NE. 62) GO TO 863
TYPE 62
GO TO 998
863 IF (MSG .NE. 63) GO TO 864
TYPE 63
GO TO 998
864 IF (MSG .NE. 64) GO TO 865
TYPE 64
GO TO 998
865 IF (MSG .NE. 65) GO TO 866
TYPE 65
GO TO 998
866 IF (MSG .NE. 66) GO TO 867
TYPE 66
GO TO 998
867 IF (MSG .NE. 67) GO TO 868
TYPE 67
GO TO 998
868 IF (MSG .NE. 68) GO TO 869
C NO ERROR 68
GO TO 998
869 IF (MSG .NE. 69) GO TO 998
C NO ERROR 69
998 FATAL = .TRUE.
TYPE 1000, ERSTAT, ERSET, ERREC, ERAREA, ERCNT
1000 FORMAT (/,' ERROR STATUS = ', I5, /,
1 ' ERROR SET = ', 6A5,/,
2 ' ERROR RECORD = ', 6A5,/,
3 ' ERROR AREA = ', 6A5,/,
4 ' ERROR COUNT = ', I10)
C ERROR MESSAGES
105 FORMAT (' A warning. Compile-time and run-time versions of',/,
1 ' schema differ.')
1 FORMAT (' Area not open.')
2 FORMAT (' Data base key inconsistent with area-name. Can also',/,
1 ' indicate that a referenced page number is in an area',/,
2 ' that is not in the invoked sub-schema.')
3 FORMAT (' Record affected (deleted or removed) by concurrent',/,
1 ' application.')
4 FORMAT (' Data name invalid or inconsistent. This can occur',/,
1 ' during GET or MODIFY with a data-name list.')
5 FORMAT (' Violation of DUPLICATES NOT ALLOWED clause.')
6 FORMAT (' Current of set, area, or record-name not known.')
7 FORMAT (' End of set, area, or record.')
8 FORMAT (' Referenced area, record, or set-name not in sub-',/,
1 ' schema. This may occur because:',/,
2 ' 1. DBCS encounters a record type not in the sub-',/,
3 ' schema when traversing a set.',/,
4 ' 2. Set type owned by the object record type is not',/,
5 ' in the sub-schema.',/,
6 ' 3. The VIA set is not in the sub-schema -- during set',/,
7 ' selection occurrence.',/,
8 ' 4. All subkeys are not in the sub-schema during CALC',/,
9 ' processing or searching a sorted set.',/,
1 ' 5. The sort key or a set not in the sub-schema is',/,
2 ' modified.')
9 FORMAT (' Update usage mode required. This is an attempt to',/,
1 ' use an updating verb when the specified area is open',/,
2 ' for retrieval.')
10 FORMAT (' Privacy breach attempted.')
11 FORMAT (' Physical space not available. No room remains for',/,
1 ' storing records. This can occur while DBCS is trying',/,
2 ' to store an internal record type such as an index',/,
3 ' or buoy.')
12 FORMAT (' Line numbers for data base keys are exhausted.')
13 FORMAT (' No current record of run-unit.')
14 FORMAT (' Object record is MANDATORY AUTOMATIC member of',/,
1 ' named set.')
15 FORMAT (' Oject record is MANDATORY type or not member type',/,
1 ' at all in named set. This is an attempt to REMOVE',/,
2 ' a record which is either a MANDATORY member or not',/,
3 ' a member of named set.')
16 FORMAT (' Record is already a member of named set.')
17 FORMAT (' Record has been deleted. This can occur during a',/,
1 ' FIND CURRENT of RECORD, SET, AREA, or RUN-UNIT',/,
2 ' or during a FIND NEXT of SET or AREA.')
18 FORMAT (' Data conversion unsuccessful.')
C NO ERROR 19
20 FORMAT (' Current record of run-unit not of correct record-',/,
1 ' type.')
C NO ERROR 21
22 FORMAT (' Record not currently member of named or implied set.')
23 FORMAT (' Illegal area-name passed in area identification.')
24 FORMAT (' Temporary and permanent areas referenced in same',/,
1 ' DML verb.')
25 FORMAT (' No set occurrence satisfies argument values. This',/,
1 ' can mean, for example, that the CALC value in the',/,
2 ' UWA matched no owner record.')
26 FORMAT (' No record satisfies RSE specified. This is a',/,
1 ' catch-all exception for the FIND verb.')
C NO ERROR 27
28 FORMAT (' Area already open.')
C NO ERROR 29
30 FORMAT (' Unqualified DELETE attempted on non-empty set.')
31 FORMAT (' Unable to open the Schema File.')
32 FORMAT (' Insufficient space allocated for the data-name.',/,
1 ' The SIZE clause specifies less space than the',/,
2 ' compiler needs.')
33 FORMAT (' None of the areas a record type can be within',/,
1 ' are in the sub-schema.')
34 FORMAT (' A set is in the sub-schema, but its owner record',/,
1 ' type is not.')
35 FORMAT (' Dynamic use-vector is full (FORTRAN ONLY).')
36 FORMAT (' Attempt to invoke too many sub-schemas (more than',/,
1 ' 8); or attempt to use UNSET with empty sub-schema',/,
2 ' stack, or SETDB with a full sub-schema stack.')
37 FORMAT (' Sub-schema passed to SETDB is not already invoked.')
38 FORMAT (' Duplicate operation attempted on a resource. This',/,
1 ' can occur because: 1) you attempt to open the',/,
2 ' journal file twice (you have opened it in EXCLUSIVE',/,
3 ' UPDATE usage-mode and are now opening a data area',/,
4 ' in UPDATE usage-mode), or 2) you call JSTRAN while',/,
5 ' a transaction is already active, or 3) you have',/,
6 ' multiple INVOKE statements and attempt to open',/,
7 ' the same area twice.')
39 FORMAT (' data base file not found.')
40 FORMAT (' Request access conflicts with existing access; that',/,
1 ' is, resource is not available. This can result from',/,
2 ' an attempt to:',/,
3 ' 1. Open an area in a USAGE-MODE incompatible with',/,
4 ' that of another run-unit using the same area.',/,
5 ' 2. Open the journal in a way that results in a',/,
6 ' USAGE-MODE conflict.',/,
7 ' 3. DELETE a record retained by another run-unit.',/,
8 ' 4. Attempt to open area or the journal and the',/,
9 ' file system signals a file-protection error.')
41 FORMAT (' No JFNs available. An attempt to open too many areas.')
42 FORMAT (' Area in undefined state. Use DBMEND to force open',/,
1 ' the area and return it to a valid state.')
43 FORMAT (' Area in creation state. This can happen to the',/,
1 ' system area only. This will occur if run-unit',/,
2 ' execution aborts at just the right time during',/,
3 ' the first OPEN of the system area. Should this occur',/,
4 ' either rerun SCHEMA or create a 0-length file with',/,
5 ' a text editor.')
44 FORMAT (' Attempt to call a journal-processing entry point',/,
1 ' before the journalling system has been initialized',/,
2 ' (by the first OPEN that requires journalling).')
45 FORMAT (' Attempt to backup the database with JBTRAN 1)',/,
1 ' while DBCS''s Cannot-Backup-Updates bit is set, or',/,
2 ' 2) when the journal is shared and commands are the',/,
3 ' interleaving unit, or 3) when the journal is shared,',/,
4 ' transactions are the interleaving unit, and the',/,
5 ' argument given to JBTRAN is greater than 0.')
C NO ERROR 46
C NO ERROR 47
C NO ERROR 48
C NO ERROR 49
C NO ERROR 50
C NO ERROR 51
C NO ERROR 52
C NO ERROR 53
C NO ERROR 54
55 FORMAT (' Pseudo-exception. DBCS types message that no',/,
1 ' sub-schema yet initialized.')
56 FORMAT (' Inconsistent data in the data base file. DBMEND',/,
1 ' should be used to restore the data base to a valid',/,
2 ' state. If the problem can be reproduced, it',/,
3 ' probably indicates a DBCS software error.')
57 FORMAT (' Probably a DBCS software error. If this recurs,',/,
1 ' report it.')
58 FORMAT (' Illegal argument passed by programmer or setup',/,
1 ' host interface; for example, passing a set-name',/,
2 ' with the STORE command.')
59 FORMAT (' No more memory available.')
60 FORMAT (' Unable to access a database file. The operating',/,
1 ' system reported an I/O error, either in normal',/,
2 ' operations or in trying to open a journal for',/,
3 ' appending.')
61 FORMAT (' Unable to append to journal (that is, the journal',/,
1 ' is in an aborted state but has not been designated',/,
2 ' as being done with).')
62 FORMAT (' Attempt to enter DBCS at other than JBTRAN, SBIND,',/,
1 ' SETDB, or UNSET while the system-in-undefined-state',/,
2 ' bit is on.')
63 FORMAT (' Unable to complete restoration of the proper data',/,
1 ' base state. This occurs either during JBTRAN',/,
2 ' initialization of a run-unit at the start of a ',/,
3 ' command or transaction.')
64 FORMAT (' Exceptions while processing exception.')
65 FORMAT (' Monitor space for ENQUEUE entries exhausted, or',/,
1 ' ENQUEUE quota exceeded.')
66 FORMAT (' ENQUEUE/DEQUEUE failure (for example, you do not',/,
1 ' have ENQUEUE capabilities, or an unacceptable',/,
2 ' argument block has been created by DBCS).')
67 FORMAT (' Unable to initialize magnetic tape service because,',/,
1 ' for example, the IPCF block is bad; the IPCF',/,
2 ' message is too long; or DAEMDB is not running.')
C NO ERROR 68
C NO ERROR 69
999 RETURN
*DBMS
END ERRTN.