137 lines
4.4 KiB
Plaintext
137 lines
4.4 KiB
Plaintext
Compile Subroutine Table_Info(Table, Process)
|
|
|
|
|
|
If Assigned(Table) else Table = ""
|
|
If Assigned(Process) else Process = ""
|
|
|
|
If Process EQ "" then Process = "ALL"
|
|
|
|
TableInfo = ""
|
|
MaxLens = ""
|
|
HeadInfo = ""
|
|
MaxFMs = ""
|
|
ColInfo = ""
|
|
Open Table to handle then
|
|
Open "DICT.":Table to hDict 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 Rec from Handle, ID then
|
|
NumFms = Count(Rec, @FM) + (Rec NE "")
|
|
If NumFMs GT MaxFMs then
|
|
MaxFMs = NumFMs
|
|
end
|
|
For FMLoop = 1 to NumFms
|
|
CurVal = Rec<FMLoop>
|
|
Begin Case
|
|
Case Index(CurVal, @SVM, 1)
|
|
If Index(ColInfo<FMLoop>, "SVM,", 1) else
|
|
ColInfo<FMLoop> = ColInfo<FMLoop>:"SVM,"
|
|
end
|
|
Case Index(CurVal, @VM, 1)
|
|
If Index(ColInfo<FMLoop>, "VM,", 1) else
|
|
ColInfo<FMLoop> = ColInfo<FMLoop>:"VM,"
|
|
end
|
|
NumVms = Count(CurVal, @VM) + (CurVal NE "")
|
|
For VMLoop = 1 to NumVMs
|
|
CurVMVal = CurVal<0, VMLoop>
|
|
CurLen = Len(CurVMVal)
|
|
If CurLen GT MaxLens<FMLoop> then
|
|
MaxLens<FMLoop> = CurLen
|
|
end
|
|
Next VMLoop
|
|
Case 1
|
|
CurLen = Len(CurVal)
|
|
If CurLen GT MaxLens<FMLoop> then
|
|
MaxLens<FMLoop> = CurLen
|
|
end
|
|
End Case
|
|
|
|
Next FMLoop
|
|
Counter += 1
|
|
end
|
|
Repeat
|
|
end
|
|
end
|
|
|
|
FinalVar = ""
|
|
For FMLoop = 1 to MaxFms
|
|
FinalVar := HeadInfo<1, FMLoop>:@VM:ColInfo<FMLoop>:@VM:MaxLens<FMLoop>:@FM
|
|
Next FMLoop
|
|
|
|
Open "SYSLISTS" to hSyslists then
|
|
Write FinalVar to hSyslists, "TABLE_INFO" else null
|
|
Call SRP_Editor_Open("Record", "SYSLISTS":@FM:"TABLE_INFO")
|
|
end
|
|
|
|
Return
|
|
|
|
|
|
Pull_Dict_Items:
|
|
HeadInfo = ""
|
|
DictList = ""
|
|
// If Dictlist is Null then make a list of all data dicts.
|
|
Clearselect
|
|
Select hDict
|
|
Done = 0
|
|
Loop
|
|
Readnext DictID else Done = 1
|
|
Until Done
|
|
Read DictRec from hDict, DictID then
|
|
If DictRec<1> _EQC "F" then
|
|
If DictRec<2> GT 0 then
|
|
DictList<DictRec<2>> = DictID
|
|
end
|
|
end
|
|
end
|
|
Repeat
|
|
// Now put the ID in place.
|
|
* DictList = Insert(DictList, 1, 0, 0, "ID")
|
|
|
|
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 hDict, 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
|
|
|