C Copyright © Oracle Corporation 1995. All Rights Reserved. SUBROUTINE store_cand C------------------------------------------------- C This subroutine stores a record in the C CANDIDATES relation. It shows how to store C a value in a field of data type VARYING STRING. C------------------------------------------------- IMPLICIT NONE LOGICAL success INTEGER retry_count C---------------------------------------------------- C Declare variables to hold user input. Declare the C field that will hold the value for the field of C data type VARYING STRING as a character string. C---------------------------------------------------- CHARACTER candidate_lname*14,candidate_name*10,candidate_mi CHARACTER candidate_status*256,confirm &RDB& DATABASE EXTERNAL pers = FILENAME 'MF_PERSONNEL' &RDB& DBKEY SCOPE IS FINISH WRITE (6,90) 90 FORMAT ('1',T25,'**** STORE CANDIDATE ****'///) C---------------------------------------------------- C Prompt user for data to STORE in the CANDIDATES C relation. C---------------------------------------------------- 100 TYPE 110 110 FORMAT ('$',' Please enter the first name of the 1candidate or type exit: ') ACCEPT 120, candidate_name 120 FORMAT (A) DO WHILE ((candidate_name.NE.'EXIT ') .AND. 1 (candidate_name .NE. 'exit ')) confirm = 'N' DO WHILE (confirm .EQ. 'N') TYPE 1000 1000 FORMAT ('$',' Please enter the candidates middle initial: ') ACCEPT 1010, candidate_mi 1010 FORMAT (A) TYPE 2000 2000 FORMAT ('$',' Please enter the candidates last name: ') ACCEPT 2010, candidate_lname 2010 FORMAT (A) TYPE 3000 3000 FORMAT ('$',' Please enter the candidate status info: ') ACCEPT 3010, candidate_status 3010 FORMAT (A) PRINT *, ' ' TYPE 10000 10000 FORMAT ('$',' Have you entered all data correctly? (Y/N): ') ACCEPT 10010, confirm 10010 FORMAT (A) END DO success = .TRUE. &RDB& START_TRANSACTION READ_WRITE RESERVING &RDB& CANDIDATES FOR SHARED WRITE C---------------------------------------------------- C Store the values specified by the user in the C CANDIDATES relation. Inform user of the success C or failure of the store operation. C---------------------------------------------------- &RDB& STORE C IN CANDIDATES USING &RDB& ON ERROR success = .FALSE. retry_count = retry_count + 1 CALL error_handler(RDB$STATUS,success) IF (success) THEN retry_count = 5 END IF &RDB& END_ERROR &RDB& C.LAST_NAME = candidate_lname; &RDB& C.FIRST_NAME = candidate_name; &RDB& C.MIDDLE_INITIAL = candidate_mi; &RDB& C.CANDIDATE_STATUS = candidate_status; &RDB& END_STORE IF (success) THEN PRINT *, ' Update operation successful' &RDB& COMMIT ELSE PRINT *, ' Update operation failed' &RDB& ROLLBACK END IF PRINT *, ' ' TYPE 110 ACCEPT 120, candidate_name END DO RETURN END