DEFINE PROCEDURE STORE_domname 
READY domname 	SHARED WRITE
!************************************************************
!* PROGRAM NAME:	STORE_domname 
!* DICTIONARY:				
!* PROGRAMMER: 		pgmname 
!* DATE WRITTEN:	pgmtime 
!* LANGUAGES:		DATATRIEVE
!* UTILITIES:		FMS
!* PROCEDURES CALLED:	NONE
!*			
!* PROCEDURE CALLED FROM:	NONE	
!* ASSOCIATED COMMAND PROCEDURE:
!* I-O FILES:		domname  
!* OUTPUT FILES:	TERMINAL
!* MAIN USER:		
!*			
!* COMMENTS:		INTERACTIVE EDIT/UPDATES FOR THE domname 
!* MODIFICATION:			
!* MOD. DATE:		
!* REASON FOR MOD.	
!************************************************************
!  AN X PRECEDING A VARIABLE NAME INDICATES THE USE OF A WORKING STORAGE AREA
DECLARE XANS		PIC X	VALID IF XANS = "Y", "N", "y", "n".
    					!ACCEPTS USER INPUT
DECLARE Xkeyname 	PIC keypic .
DECLARE XUPDATE		PIC X	VALID IF XUPDATE = "A","a","C","c","D","d",
    					"E", "e".
    					!TYPE OF UPDATE:A=ADD;C=CHANGE;D=DELETE
! AN T PRECEDING A VARIABLE NAME IS USED FOR TEMPLATES
DECLARE TANS		PIC X	VALID IF TANS = "Y", "N", "y", "n".
DECLARE TEMPLATE_FOUND_FLAG  PIC X.
DECLARE Tkeyname 	PIC keypic.
DECLARE ERRORFLAG	PIC 9.		
DECLARE FOUNDFLAG	PIC 9.		!MATCHING domname RECORD
!*******END OF DECLARATIONS
XUPDATE = *."A for add, C for change, D for delete, or E to exit (A/C/D/E)"
WHILE XUPDATE NOT = "E", "e"
BEGIN
    Xkeyname  = *."the keyname "		!*******GET KEY
    !*****CHECK FOR MATCHING domname RECORD
    FOUNDFLAG = 0
    FOR FIRST 1 domname  WITH keyname  = Xkeyname 
    BEGIN
    	FOUNDFLAG = 1
    END
    IF (XUPDATE = "A", "a") THEN
    BEGIN
    	ERRORFLAG = 0
    	FOR ALL domname WITH keyname = Xkeyname 
    		ERRORFLAG = 1
    	IF ERRORFLAG = 0
    	BEGIN
    	TANS = *."Y to use a template or N not to use a template"
    	IF (TANS = "Y", "y") THEN
    	BEGIN
             	Tkeyname  = *."the template's KEYNAME "
    		Tkeyname  = FN$UPCASE(Tkeyname)
    		TEMPLATE_FOUND_FLAG	= 0
        	FOR FIRST 1 HOLD IN domname WITH keyname = Tkeyname 
        	BEGIN
    	        	TEMPLATE_FOUND_FLAG 	= 1
    			STORE domname USING
    			BEGIN
				domname_REC 	= HOLD.domname_rec 
				keyname 	= Xkeyname 
    			END
    		END
        	IF (TEMPLATE_FOUND_FLAG = 0)	PRINT "Template not found"
    	END
    END
    END
    IF (XUPDATE = "C", "c" 	AND FOUNDFLAG = 1) 	OR
       (XUPDATE = "A", "a" 	AND TANS = "Y", "y"    	AND 
        TEMPLATE_FOUND_FLAG = 1) THEN
    BEGIN
    	    FOR FIRST 1 domname WITH keyname = Xkeyname 
    	    BEGIN
    		DISPLAY_FORM frmname IN flbname USING
    		BEGIN
    			PUT_FORM keyname 	= Xkeyname 
***PUT_FORM here
    		END RETRIEVE USING
    		BEGIN
    			XANS	= GET_FORM XANS
    			IF (XANS = "Y", "y") THEN MODIFY USING
    			BEGIN
***GET_FORM here
    			END
       			IF (XANS = "N", "n"    AND TANS = "Y"," y"	AND
    			    XUPDATE = "A", "a" AND TEMPLATE_FOUND_FLAG = 1)
    				ERASE;
    		END
    	    END
    END
    IF XUPDATE = "D", "d" AND FOUNDFLAG = 1 THEN
    BEGIN
    	FOR ALL domname WITH keyname = Xkeyname 
    	BEGIN
    		ERASE;
    		PRINT "Record erased"
    	END
    END
    IF (XUPDATE = "D", "d", "C", "c" AND FOUNDFLAG = 0)
        PRINT "RECORD NOT FOUND - REENTER"
    IF XUPDATE = "A", "a" AND FOUNDFLAG = 0	AND
       TANS = "N", "n"
    BEGIN
    	DISPLAY_FORM frmname IN flbname USING
    	BEGIN
    		PUT_FORM keyname 	= Xkeyname 
    	END RETRIEVE USING
    	BEGIN
    		XANS	= GET_FORM XANS
		IF XANS = "Y", "y" THEN STORE domname USING
		BEGIN
    			keyname	= Xkeyname 
***GET_FORM here
		END
    	END
    END
    IF (XUPDATE = "A", "a" AND FOUNDFLAG = 1)
        PRINT "RECORD ALREADY EXISTS - REENTER"
    XUPDATE = *."A for add, C for change, D for delete, or E to exit (A/C/D/E)"
END
END-PROCEDURE

