これは InterSystems FAQ サイトの記事です。
これらのファイルを個別にエクスポートする最も簡便で確実な方法は、VSCodeを利用してIRISのソースファイルを管理することです。
VSCodeの利用方法は、以下をご参照ください
VSCode以外のツールとしての提供はありませんので、是非VSCodeのご利用をご検討ください。
VSCodeをご利用できない場合は、IRISが提供するAPIを使用して、個別にプログラミングする必要があります。
1) クラス定義
%SYSTEM.OBJクラスのExportAllClassesIndividualメソッドを使用してクラス毎にファイル出力できますが、その出力形式がXML形式です。
XML形式での出力は、可読性も低く、クラス数が多量にある場合には、インポートの時間も余計にかかるため、複数クラスを1ファイルにまとめる目的以外では、推奨しておりません。
可読性の高いUDL形式で出力するためには、
該当ネームスペースに存在するクラス名をクエリーで抽出し、クラス定義をUDL形式でエクスポートするメソッドで出力することができます。
以下はClaude Codeで生成したサンプルコードです。
Class Samples.ExportUDLAll
{
/// 指定されたネームスペース内のすべてのクラス定義を
/// 個別のUDL形式ファイルとして指定ディレクトリに出力する
///
/// @param pDirectory 出力先ディレクトリ名
/// @return %Status ステータスコード
ClassMethod Export(pDirectory As %String) As %Status
{
Set tSC = $$$OK
Try {
// %SYSTEM.OBJ の GetClassList メソッドでクラス名一覧を取得
// items はローカル多次元配列として ByRef で返る
// 第一サブスクリプトにクラス名が格納される
Set tSC = $SYSTEM.OBJ.GetClassList(.items, "/application=1")
If $$$ISERR(tSC) Quit
// items 配列をサブスクリプト順に走査してクラス数分繰り返す
Set tClassName = ""
For {
Set tClassName = $Order(items(tClassName))
Quit:tClassName=""
Write "class name = ", tClassName, !
Set tFileName = pDirectory _ "/" _ tClassName _ ".cls"
Write "file name = ", tFileName, !
// ExportUDL の第一パラメータ(itemname)はクラス名に ".cls" を付加
Set tSC = $SYSTEM.OBJ.ExportUDL(tClassName _ ".cls", tFileName)
If $$$ISERR(tSC) Quit
Write "Exported: ", tClassName, " -> ", tFileName, !
}
} Catch ex {
Set tSC = ex.AsStatus()
}
Quit tSC
}
}