Inefficient, but I check for Direct, Local and/or Global.  Here is the 
subroutine that I use, which you can see has three opens.  On the positive 
side, this has not failed me since I started using it.  (Hopefully, there 
are no typos in this.)

SUBROUTINE VERIFY.PROGRAM(PROGRAM.NAME,CATALOG.TYPE,CATALOG.PATH)

*
* Open files, initialize variables
*

OPEN 'CTLG' TO F.CTLG ELSE STOP 201,'CTLG'
OPEN 'CTLGTB' TO F.CTLGTB ELSE STOP 201,'CTLGTB'
OPEN 'VOC' TO F.VOC ELSE STOP 201,'VOC'
CATALOG.TYPE = ''
CATALOG.PATH = ''

*
* Check for a voc entry
*

READ VOC.REC FROM F.VOC,PROGRAM.NAME THEN
        IF VOC.REC<1> = 'C' THEN
                OBJECT.PATH = VOC.REC<2>
                NUM.FIELDS = COUNT(OBJECT.PATH,'/') + 1

                *
                * Check to see if this is a direct catalog
                *

                OBJECT.NAME = FIELD(OBJECT.PATH,'/',NUM.FIELDS)
                OBJECT.FILE = FIELD(OBJECT.PATH,'/',NUM.FIELDS - 1)
                IF OBJECT.NAME = '_':PROGRAM.NAME AND OBJECT.FILE # "CTLG" 
THEN
                        CATALOG.TYPE<-1> = 'Direct'
                        CATALOG.PATH<-1> = OBJECT.PATH
                END

                *
                * Look in the CTLG file, indicates local catalog
                * (This could be deceiving if the direct catalog exists.)
                *

                READV EXISTS FROM F.CTLG,PROGRAM.NAME,0 THEN
                        CATALOG.TYPE<-1> = 'Local'
                        IF VOC.REC<3> # '' THEN
                                OBJECT.PATH := ' - ':VOC.REC<3>
                        END
                        CATALOG.PATH<-1> = OBJECT.PATH
                END
        END
END ELSE

        *
        * Look in the CTLG file, indicates a local catalog, but no
        * corresponding voc record.  This is probably an error, since
        * without a voc record, I don't think you can call the program.
        *

        READV EXISTS FROM F.CTLG,PROGRAM.NAME,0 THEN
                CATALOG.TYPE<-1> = 'Local?'
                CATALOG.PATH<-1> = PROGRAM.NAME
        END
END

*
* Look in the global catalog directory for the program name
*

READ CTLGTB.REC FROM F.CTLGTB,PROGRAM.NAME THEN
        CATALOG.TYPE<-1> = 'Global'
        CATALOG.PATH<-1> = CTLGTB.REC<3>
END

RETURN


--------------------------------------------------
Charlie Rubeor
Senior Database Administrator
Wiremold/Legrand
60 Woodlawn Street
West Hartford, CT  06110
Tel: 860-233-6251 x3498
Fax: 860-523-3690
Email: [EMAIL PROTECTED]
--------------------------------------------------
-------
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to