プログラムからグローバルのインポート/エクスポート処理を呼び出すことはできますか?(バージョン5.1以降)

バージョン5.1以降では、以下の様な方法で、グローバルのインポート/エクスポート処理をプログラムに組み込むことができます。

1. グローバルエクスポート方法
1.1 XML形式でのエクスポート
グローバルをXML形式のファイルにエクスポートする場合、$system.OBJ.Export() を使用します。

1.1.1. 指定したグローバルをエクスポートする場合
エクスポート対象グローバルを グローバル名.gbl で指定します(先頭の ^ は不要)。
例:

Do $system.OBJ.Export("a.gbl,b,gbl","c:\temp\globals.xml",,.errors)

結果については、errors に格納されます。$system.OBJ.Export() の詳細はクラスリファレンス %SYSTEM.OBJ を参照してください。


1.1.2. ネームスペース内の全グローバルをエクスポートする場合
%SYS.GlobalQueryクラスでグローバル一覧を取得し、それを $system.OBJ.Export() に渡してエクスポートを実行します
例:

 Set rs=##class(%ResultSet).%New("%SYS.GlobalQuery:NameSpaceList")
 Do rs.Execute()
 Kill globals
 While rs.Next() {
     Set globals(rs.Get("Name")_".gbl")=""
 }
 Do $system.OBJ.Export(.globals,"c:\temp\allglobal.xml",,.errors)

(ここでは簡略化のためエラーチェックは省略しています)


1.2. ブロック形式でのエクスポート(%GOFユーティリティと同等)
ブロック形式でグローバルをエクスポートするには、クラス %Library.Global のメソッドExport() を使用します。
エクスポート対象グローバルは、1.1.1と同じ形式で指定します。
各引数の詳細はクラスリファレンスを参照してください。
例:

USER>Set status=##class(%Library.Global).Export(,"a.gbl,b.gbl","c:\test.gof",7)
GO/GOF形式でエクスポートの開始 07/23/2008 17:01:03
グローバルをエクスポート中: ^a
グローバルをエクスポート中: ^b
エクスポートが正常に完了しました。
USER>


2. グローバルインポート方法
2.1 XML形式ファイルのインポート
2.1.1 ファイルに含まれる全グローバルをインポートする
XMLファイルに含まれる全グローバルをインポートするには $system.OBJ.Load() を使用します。
例:

Do $system.OBJ.Load("c:\temp\globals.xml",,.errors)


2.1.2 ファイルに含まれるグローバルのうち一部のみをインポートする
XMLファイルに含まれる一部のグローバルのみ選択してインポートする場合、一旦$system.OBJ.Load() で 第5引数の listonly を 1 に設定してXMLファイルを読み込み、第4引数(出力引数)で得られたリストからインポート対象を選択して第6引数で指定します。
例:

 Set file="c:\temp\globals.xml"
 // まずXMLに含まれるアイテム一覧を取得
 Do $system.OBJ.Load(file,,.errors,.list,1 /* listonly */)
 Set item=$Order(list(""))
 Kill loaditem
 While item'="" {
     If item["Sample" {          // Sample を含むもののみインポート
         Set loaditem(item)=""
         Set item=$Order(list(item))
     }
 }
 // 作成されたリストでインポート処理実行
 Do $system.OBJ.Load(file,,.errors,,,.loaditem)


2.2 ブロック形式でのインポート(%GIFユーティリティと同等)
ブロック形式でエクスポートされたグローバルをインポートするには、$system.OBJ.Load() またはクラス %Library.Global の Import() メソッドを使用します。

ファイル中の特定のグローバルのみインポートする場合は、2.1.2と同じ方法が使用できます。
例1:

USER>Do $system.OBJ.Load("c:\test.gof")
ロード開始 07/23/2008 17:01:49
ファイル c:\test.gof を gbl としてロード中
インポートしたグローバル: ^a
インポートしたグローバル: ^b
ロードが正常に完了しました。
USER>


例2:

USER>Set status=##class(%Library.Global).Import(,"*","c:\test.gof",7) 

該当する製品: Caché, Ensemble, HealthShare/Caché Based, IRIS Data Platform, HealthShare/IRIS Based, IRIS for Health
関連トピック: プログラムからルーチンやグローバルをインポート/エクスポートすることはできますか?
関連トピック:プログラムからルーチンをインポート/エクスポートすることはできますか?
添付ファイル:

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る