open-insight/LSL2/STPROC/TABLE_INFO_SYM.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

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