189 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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<FIELDS_NAME$>,@VM) + (FieldData<FIELDS_NAME$> NE '')
 | |
| 	PrintLines = ''
 | |
| 	
 | |
| 	TextLines		= ''
 | |
| 	SymTextLines	= ''
 | |
| 	Symbolics		= ''
 | |
| 	SymSort			= ''
 | |
| 	FieldSort		= ''
 | |
| 
 | |
| 	LineCnt = 0
 | |
| 	FOR I = 1 TO MaxFields
 | |
| 		
 | |
| 		FieldName = FieldData<FIELDS_NAME$,I>
 | |
| 		IF FieldName[1,1] NE '%' THEN
 | |
| 			DictRec = XLATE('DICT.':TableName,FieldName,'','X')
 | |
| 			
 | |
| 			FMC				= DictRec<DICT_COLUMN_NO$>
 | |
| 			Part			= DictRec<DICT_PART$>
 | |
| 			Type			= DictRec<DICT_TYPE$>
 | |
| 			Master			= DictRec<DICT_MASTER_FLAG$>
 | |
| 			S_M				= DictRec<DICT_SM$>
 | |
| 			DataType		= DictRec<DICT_GENERIC_TYPE$>
 | |
| 			Head			= DictRec<DICT_DISPLAY$>
 | |
| 			Desc			= DictRec<DICT_DESC$>
 | |
| 			Conv			= DictRec<DICT_CONV$>
 | |
| 			Length			= DictRec<DICT_LENGTH$>
 | |
| 			Justification	= DictRec<DICT_JUST$>
 | |
| 			
 | |
| 			Formula			= DictRec<DICT_FORMULA$>
 | |
| 			SWAP @VM WITH CRLF$ IN Formula
 | |
| 			
 | |
| 			Btree			= DictRec<DICT_INDEX_FLAG$>
 | |
| 			XrefField		= DictRec<DICT_XREF$>
 | |
| 			RelatedTo		= DictRec<DICT_RELATIONAL$>
 | |
| 			RelatedFrom		= DictRec<DICT_RELATED$>
 | |
| 			Protected		= DictRec<DICT_PROTECT$>
 | |
| 			CaseSensitive	= DictRec<DICT_LOWERCASE$>
 | |
| 			
 | |
| 			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
 |