136 lines
4.5 KiB
Plaintext
136 lines
4.5 KiB
Plaintext
Compile Subroutine Table_Info_Sym(Table, Process, Exceptions)
|
|
|
|
|
|
If Assigned(Table) else Table = ""
|
|
If Assigned(Process) else Process = ""
|
|
If Assigned(Exceptions) else Exceptions = ""
|
|
|
|
If Process EQ "" then Process = "ALL"
|
|
|
|
TableInfo = ""
|
|
MaxLens = ""
|
|
HeadInfo = ""
|
|
MaxFMs = ""
|
|
ColInfo = ""
|
|
Open Table to handle then
|
|
Open "DICT.":Table to @DICT then
|
|
GoSub Pull_Dict_Items
|
|
Done = 0
|
|
Counter = 0
|
|
|
|
Select handle
|
|
Loop
|
|
Readnext @ID else Done = 1
|
|
If Num(Process) then
|
|
// go this many times
|
|
If Counter GT Process then Done = 1
|
|
end
|
|
Until Done
|
|
Read @RECORD from Handle, @ID then
|
|
For ColLoop = 1 to NumCols
|
|
CurVal = Calculate(DictList<ColLoop>)
|
|
Begin Case
|
|
Case Index(CurVal, @SVM, 1)
|
|
If Index(ColInfo<ColLoop>, "SVM,", 1) else
|
|
ColInfo<ColLoop> = ColInfo<ColLoop>:"SVM,"
|
|
end
|
|
Case Index(CurVal, @VM, 1)
|
|
If Index(ColInfo<ColLoop>, "VM,", 1) else
|
|
ColInfo<ColLoop> = ColInfo<ColLoop>:"VM,"
|
|
end
|
|
NumVms = Count(CurVal, @VM) + (CurVal NE "")
|
|
For VMLoop = 1 to NumVMs
|
|
CurVMVal = CurVal<0, VMLoop>
|
|
CurLen = Len(CurVMVal)
|
|
If CurLen GT MaxLens<ColLoop> then
|
|
MaxLens<ColLoop> = CurLen
|
|
end
|
|
Next VMLoop
|
|
Case 1
|
|
CurLen = Len(CurVal)
|
|
If CurLen GT MaxLens<ColLoop> then
|
|
MaxLens<ColLoop> = CurLen
|
|
end
|
|
End Case
|
|
|
|
Next ColLoop
|
|
Counter += 1
|
|
end
|
|
Repeat
|
|
end
|
|
end
|
|
|
|
FinalVar = ""
|
|
For ColLoop = 1 to NumCols
|
|
FinalVar := HeadInfo<1, ColLoop>:@VM:ColInfo<ColLoop>:@VM:MaxLens<ColLoop>:@FM
|
|
Next ColLoop
|
|
|
|
Open "SYSLISTS" to hSyslists then
|
|
Write FinalVar to hSyslists, "TABLE_INFO_SYM" else null
|
|
Call SRP_Editor_Open("Record", "SYSLISTS":@FM:"TABLE_INFO_SYM")
|
|
end
|
|
|
|
Return
|
|
|
|
|
|
Pull_Dict_Items:
|
|
HeadInfo = ""
|
|
DictList = ""
|
|
|
|
// If Dictlist is Null then make a list of all data dicts.
|
|
Clearselect
|
|
Select @DICT
|
|
Done = 0
|
|
Loop
|
|
Readnext DictID else Done = 1
|
|
Until Done
|
|
Read DictRec from @DICT, DictID then
|
|
If DictRec<1> _EQC "S" then
|
|
Locate DictID in Exceptions using "," setting Pos else
|
|
Locate DictID in DictList by "AL" using @FM setting Pos else
|
|
DictList = Insert(DictList, Pos, 0, 0, DictID)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
Repeat
|
|
|
|
NumCols = Count(DictList, @FM) + (DictList NE "")
|
|
For ColLoop = 1 to NumCols
|
|
CurDictID = DictList<ColLoop>
|
|
VMPos = Field(CurDictID, "*", 2, 1)
|
|
If VMPos then
|
|
If VMPos[1, 2] _EQC "VM" then
|
|
VMPos[1, 2] = ""
|
|
end
|
|
CurDictID = Field(CurDictID, "*", 1, 1)
|
|
Swap " " with "_" in CurDictID
|
|
Convert @Lower.Case to @Upper.Case in CurDictID
|
|
end else
|
|
Swap " " with "_" in CurDictID
|
|
Convert @Lower.Case to @Upper.Case in CurDictID
|
|
If CurDictID EQ "ID" then
|
|
expDictID = "MAIN_ID"
|
|
end else
|
|
expDictID = CurDictID
|
|
end
|
|
end
|
|
Read DictRec from @DICT, CurDictID else DictRec = ""
|
|
Begin Case
|
|
Case DictList<ColLoop> EQ "ID"
|
|
HeadInfo<1, ColLoop> = "ID"
|
|
HeadInfo<2, ColLoop> = 0
|
|
HeadInfo<3, ColLoop> = ""
|
|
HeadInfo<4, ColLoop> = ""
|
|
HeadInfo<5, ColLoop> = ""
|
|
Case DictRec
|
|
HeadInfo<1, ColLoop> = DictList<ColLoop>
|
|
HeadInfo<2, ColLoop> = DictRec<2> ; * FM
|
|
HeadInfo<3, ColLoop> = DictRec<7> ; * Oconv
|
|
HeadInfo<4, ColLoop> = VMPos
|
|
HeadInfo<5, ColLoop> = ""
|
|
End Case
|
|
Next ColLoop
|
|
return
|
|
|