COMPILE SUBROUTINE EXPORT_INTERFACE_DICTS(Dummy) /* Routine to export dictionary information to text file for work with SQL interface July 2, 2012 - John C. Henry - J.C. Henry, Inc. */ DECLARE SUBROUTINE Utility DECLARE FUNCTION Utility $INSERT DICT_EQUATES equ CRLF$ to char(13):char(10) equ TAB$ TO CHAR(9) EQU COL_TABLENAME$ TO 1 EQU COL_FIELD_NO$ TO 2 EQU COL_COL_NAME$ TO 3 EQU COL_COL_HEAD$ TO 4 EQU COL_COL_DESC$ TO 5 EQU COL_BTREE$ TO 6 EQU COL_XREF$ TO 7 EQU COL_CASE_SENSITIVE$ TO 8 EQU COL_RELATED_TO$ TO 9 EQU COL_RELATED_FROM$ TO 10 TableNames = 'WO_LOG':@VM TableNames := 'WO_MAT':@VM TableNames := 'REACT_RUN':@VM TableNames := 'RDS_LAYER':@VM TableNames := 'RDS_TEST':@VM TableNames := 'TW_USE':@VM TableNames := 'COC':@VM TableNames := 'CLEAN_INSP':@VM TableNames := 'NCR':@VM TableNames := 'PROD_VER':@VM TableNames := 'PROD_SPEC':@VM TableNames := 'REACT_UTIL':@VM TableNames := 'REACTOR_LOG':@VM TableNames := 'REACTOR_PM' TableCnt = COUNT(TableNames,@VM) + (TableNames NE '') CurrPath = DRIVE() ;* Returns OI directory so backup one level CurrPath = FIELD(CurrPath,'\',1,COUNT(CurrPath,'\')):'\ACADTEXT' DirPath = CurrPath DirPath = UTILITY('CHOOSEDIR',@WINDOW,'Directory for Acad Text':@FM:CurrPath) Output = '' Output = 'TableName':@VM Output := 'Field No':@VM Output := 'Field Name':@VM Output := 'Heading':@VM Output := 'Description':@VM Output := 'Btree':@VM Output := 'XRef':@VM Output := 'Case Sense':@VM Output := 'Related To':@VM Output := 'Related From':@FM FOR N = 1 TO TableCnt TableName = TableNames<1,N> FieldData = XLATE('DICT.':TableName,'%FIELDS%','','X') ;* Get the %FIELD% record from the dictionary MaxFields = COUNT(FieldData,@VM) + (FieldData NE '') PrintLines = '' TextLines = '' SymTextLines = '' Symbolics = '' SymSort = '' FieldSort = '' LineCnt = 0 FOR I = 1 TO MaxFields FieldName = FieldData IF FieldName[1,1] NE '%' THEN DictRec = XLATE('DICT.':TableName,FieldName,'','X') FMC = DictRec Part = DictRec Type = DictRec Master = DictRec S_M = DictRec DataType = DictRec Head = DictRec Desc = DictRec Conv = DictRec Length = DictRec Justification = DictRec Formula = DictRec SWAP @VM WITH CRLF$ IN Formula Btree = DictRec XrefField = DictRec RelatedTo = DictRec RelatedFrom = DictRec Protected = DictRec CaseSensitive = DictRec DataLine = '' IF Btree = 1 THEN DataLine<1,COL_BTREE$> = 'Yes' IF XrefField = 1 THEN DataLine<1,COL_XREF$>= 'Yes' IF CaseSensitive = 1 THEN DataLine<1,COL_CASE_SENSITIVE$>= 'Yes' IF RelatedTo NE '' THEN DataLine<1,COL_RELATED_TO$>= RelatedTo IF RelatedFrom NE '' THEN DataLine<1,COL_RELATED_FROM$>= RelatedFrom IF FieldName[-1,'B4'] NE '_ORG' THEN IF S_M = 'M' THEN FieldName := '(s)' END IF Type = 'S' THEN DataLine<1,COL_TABLENAME$> = TableName DataLine<1,COL_FIELD_NO$> = '' DataLine<1,COL_COL_NAME$> = FieldName DataLine<1,COL_COL_HEAD$> = Head DataLine<1,COL_COL_DESC$> = Desc END IF Type = 'F' THEN DataLine<1,COL_TABLENAME$> = TableName DataLine<1,COL_FIELD_NO$> = FMC DataLine<1,COL_COL_NAME$> = FieldName DataLine<1,COL_COL_HEAD$> = Head DataLine<1,COL_COL_DESC$> = Desc END IF FMC NE '' THEN IF FMC = 0 AND Part NE '' THEN FMC := '.':Part LOCATE FMC IN FieldSort BY 'AR' USING @FM SETTING POS THEN FieldSort = INSERT(FieldSort,POS,0,0,FMC) END ELSE FieldSort = INSERT(FieldSort,POS,0,0,FMC) END TextLines = INSERT(TextLines,POS,0,0,DataLine) END ELSE LOCATE FieldName IN SymSort USING @FM SETTING POS ELSE SymSort = INSERT(SymSort,POS,0,0,FieldName) END SymTextLines = INSERT(SymTextLines,POS,0,0,DataLine) END ;* End of sorting routine END ;* End of check for "_ORG" END ; * NEXT I Output := TextLines:@FM:SymTextLines:@FM TestLines = '' SymTextLines = '' NEXT N SWAP @FM WITH CRLF$ IN Output CONVERT @VM TO TAB$ IN Output FileName = 'InterfaceDicts.TXT' OSWRITE Output ON DirPath:'\':FileName RETURN