Get your code over ODBC/JDBC
I recently met an ages old issue related to code maintenance:
- You have access to your IRIS server just over ODBC/JDBC
- no VSCode access, no Studio access
- no (Web-)Terminal access
But you need to take a look on Classes or Routines or Globals !!
Anyhow SQL is your friend.
- First you need a simple table as temporary text store.
CREATEGLOBALTEMPORARYTABLE arcc.txt (line VARCHAR(32000))Not a thrilling action.
- Next you export your code to local file and import it to your table
CREATEPROCEDURE arcc.show (IN code VARCHAR())
RETURNSINTEGERLANGUAGE OBJECTSCRIPT
{
setfile="code.tmp"do $system.OBJ.ExportUDL($g(code),file)
openfile:"R":0else quit 0kill ^||arcc.txtD
usefile
try {
for i=1:1read line set ^||arcc.txtD($i(^||arcc.txtD))=$lb(line)
}
catch (e) {
closefile:"D"
}
quit 1
}How to use it:
select * from arcc.txt where1=arcc.show('arcc.txt.cls')And you get:
Class arcc.txt Extends%Persistent [ ClassType = persistent, DdlAllowed, Final, Owner = {_PUBLIC}, ProcedureBlock, SqlRowIdPrivate, SqlTableName = txt ]
{
Property line As%Library.String(MAXLEN = 32000) [ SqlColumnNumber = 2 ];Parameter SQLTABLETYPE = "GLOBAL TEMPORARY";
Storage Default
{
<Data name="txtDefaultData">
<Value name="1">
<Value>line</Value>
</Value>
</Data>
<DataLocation>^||arcc.txtD</DataLocation>
<DefaultData>txtDefaultData</DefaultData>
<IdLocation>^||arcc.txtD</IdLocation>
<IndexLocation>^||arcc.txt</IndexLocation>
<StreamLocation>^||arcc.txt</StreamLocation>
<Type>%Storage.Persistent</Type>
}
}
- Or traditional if you prefer XML output over UDL use
- $system.OBJ.Export() as export method.
<?xml version="1.0" encoding="UTF-8"?>
<Export generator="IRIS" version="26" zv="IRIS for Windows (x86-64) 2024.2.0L (Build 213U)" ts="2024-12-22 20:40:09">
<Class name="arcc.txt">
<Description>
</Description>
<Final>1</Final>
<ClassType>persistent</ClassType>
<DdlAllowed>1</DdlAllowed>
<Owner>_PUBLIC</Owner>
<ProcedureBlock>1</ProcedureBlock>
<SqlRowIdPrivate>1</SqlRowIdPrivate>
<SqlTableName>txt</SqlTableName>
<Super>%Persistent</Super>
<TimeChanged>67196,63061.387736</TimeChanged>
<TimeCreated>67196,63061.3543687</TimeCreated>
<Property name="line">
<Type>%Library.String</Type>
<Collection/>
<Required>0</Required>
<SqlColumnNumber>2</SqlColumnNumber>
<Parameter name="MAXLEN" value="32000"/>
</Property>
<Parameter name="SQLTABLETYPE">
<Default>GLOBAL TEMPORARY</Default>
</Parameter>
<Storage name="Default">
<Type>%Storage.Persistent</Type>
<DataLocation>^||arcc.txtD</DataLocation>
<DefaultData>txtDefaultData</DefaultData>
<IdLocation>^||arcc.txtD</IdLocation>
<IndexLocation>^||arcc.txt</IndexLocation>
<StreamLocation>^||arcc.txt</StreamLocation>
<Data name="txtDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>line</Value>
</Value>
</Data>
</Storage>
</Class>
</Export>XML might be useful for Global Exports if required
select * from arcc.txt where1=arcc.showxml('%ZPM.Client.ServerDefD.GBL')<?xml version="1.0" encoding="UTF-8"?>
<Export generator="IRIS" version="26" zv="IRIS for Windows (x86-64) 2024.2.0L (Build 213U)" ts="2024-12-22 20:50:01">
<Global>
<Node><Sub>^%ZPM.Client.ServerDefD</Sub>
<Data>1</Data>
<Node><Sub>1</Sub>
<DataBase64>NQF+JVpQTS5QYWNrYWdlTWFuYWdlci5DbGllbnQuUmVtb3RlU2VydmVyRGVmaW5pdGlvbn4KAXJl
Z2lzdHJ5AQEBAQMEAQEnAWh0dHBzOi8vcG0uY29tbXVuaXR5LmludGVyc3lzdGVtcy5jb20DBAED
BAECBA==
</DataBase64>
<Node><Sub>RemoteServerDefinition</Sub>
<DataBase64>AQIBAgEnAWh0dHBzOi8vcG0uY29tbXVuaXR5LmludGVyc3lzdGVtcy5jb20CAQIB
</DataBase64>
</Node>
</Node>
</Node>
</Global>
</Export>And all this is just running over ODBC/JDBC
Comments
Really something useful for customer support without local installed external add-on
Nice information, Thanks for sharing
By the way, in SQL Data Lens, which works via JDBC, it is possible to see the source code of classes:
somewhat outside my private budget
.png)
-------------
-------------
-------------
-------------
-------------
Agree! 👏
Why spending money for something I can do by own hands.
Luc
private sound like you are an IRIS hobby developer? If you work with IRIS locally you can use SQL DATA LENS free of charge.
Andreas
Thanks for the offer.
As freelancer with instable income I need to keep cost as low as possible