クリアフィルター
お知らせ
Toshihiko Minamoto · 2020年12月21日
コミュニティの皆さん、こんにちは!
この記事では、開発者コミュニティと InterSystems Global Mastersアドボケート・ハブのレベルに関する情報を掲載しています。
お知らせ:現在、これらのバッジの多くは変更中です。この表も近日中に更新される予定です。
すべての Global Masters メンバー(アドボケイト)は、開発者コミュニティへの貢献と Global Masters での活動に応じてさまざまなレベルのアドボカシーを達成できます。
新しいレベルに移行するたびに、新しいタイプのチャレンジ/タスクと新しいタイプの報酬が開始されます。
レベルアップするには、次のレベルからいくつかのバッジを獲得する必要があります。 バッジは Global Master でさまざまなチャレンジを完了すると獲得できます。
現在は 6 つのレベルがあります。
1. インサイダー 2. アドボケイト 3. スペシャリスト 4. エキスパート 5. アンバサダー 6. VIP
➡ バッジの上にマウスカーソルを移動すると、獲得方法を確認できます。
レベル名
ルール
インサイダー
Hubに参加した時点で「インサイダー」レベルとしてスタートします。
アドボケイト
次のレベルには以下のうち 2 つのバッジが必要です。
DC Author
InterSystems Researcher
DC Commenter
DC Problem Solver
DC Translator
Pull RequestContributor
InterSystemsOpen Exchange Developer
DC Recruiter
Best PracticesAuthor
Global Masterof the Month
よって、質問か質問への回答の投稿、同僚をコミュニティに招待するだけで獲得できます!
スペシャリスト
スペシャリストレベルには以下のうち 3 つのバッジが必要です。
InsightfulCommenter
InsightfulAuthor
Advanced PullRequest Contributor
Popular Writer
Reporter Badge
CuriousMember
Masterof Answers
PopularApp badge
Bronze OpenExchange Developer
BronzeRecruiter
RecognizableBest Practices Author
年間実績バッジ
DC Best-SellingAuthor
DC Expert
DC Opinion Leader
InterSystemsDeveloperof the Year
InterSystemsApplicationof the Year
スペシャリストの獲得は簡単ではありませんが、不可能ではありません!
エキスパート
エキスパートレベルには以下のうち 4 つのバッジが必要です。
ExpertCommenter
Expert Author
Bronze PullRequest Contributor
NotableWriter
Blogger Badge
Thorough Member
Bronze Masterof Answers
Bronze Popular App badge
Silver OpenExchange Developer
SilverRecruiter
Bronze BestPractices Author
年間実績バッジ
BronzeBest-Selling Author
BronzeExpert
BronzeOpinion Leader
Bronze InterSystemsDeveloper of the Year
Bronze InterSystemsApplication of The Year
InterSystems Data Platformsのエキスパートになるのは非常に困難です!私たちはエキスパートと巡り合えて光栄です!
アンバサダー
アンバサダーレベルには以下のうち 4 つのバッジが必要です。
RecognizableCommenter
Silver PullRequest Contributor
FamousWriter
Influencerbadge
InquisitiveMember
Silver Masterof Answers
Silver Popular App badge
Gold OpenExchange Developer
Gold Recruiter
Silver BestPractices Author
年間実績バッジ
Silver Best-Selling Author
SilverExpert
SilverOpinion Leader
Silver InterSystemsDeveloper of the Year
Silver InterSystemsApplication of The Year
VIP
VIP レベルには以下のうち 5 つのバッジが必要です。
PowerfulCommenter
PowerfulAuthor
Gold PullRequest Contributor
Gold Writer
Opinion Maker
SocraticMember
Gold Masterof Answers
Gold PopularApp Badge
Platinum Popular App badge
PlatinumRecruiter
Gold BestPractices Author
年間実績バッジ
Gold Best-Selling Author
Gold Expert
Gold Opinion Leader
Gold InterSystemsDeveloper of the Year
Gold InterSystemsApplication of The Year
Bronze Advocateof the Year
Silver Advocateof the Year
Gold Advocateof the Year
これは並外れて素晴らしいレベルです!あなたの素晴らしい貢献に感謝します!
補足
Global Masters に関する詳細な情報は、以下のリンクでご確認ください。
InterSystems Global Masters への参加方法
Global Masters バッジの説明
Global Masters プログラムの変更点
InterSystems Global Masters Advocacy Hub にまだご参加でない方はぜひ今すぐご参加ください!
この投稿へのコメントでお気軽にご質問ください。
記事
Megumi Kakechi · 2021年6月3日
Java のプログラムで $List 構造のデータを扱うには、InterSystems 製品が提供する IRISList クラスを使用することが可能です。
こちらは、IRIS Native と同様に JDBCドライバの拡張機能の一部として提供しております。
Native API for Java Quick Reference(英語のみ)
こちらでは、InterSystems 製品上に $List 構造を扱うクラスメソッドを作成し、それをストアドプロシージャとして公開し Java から呼び出すサンプルをご紹介します。
【使用可能バージョン】
IRIS 2020.1 以降に同梱されている JDBC ドライババージョン 3.1.0 以降。ただし、JDBCで使用する場合は 3.2.0以降(IRIS2021.1以降)。
<IRISインストールディレクトリ>\dev\java\lib\JDK(Ver.)\intersystems-jdbc-3.1.0.jar
【手順】
1. IRISサーバの任意のネームスペースに以下のようなクラスを用意します。 SqlProc キーワード を指定し、メソッドを SQL ストアドプロシージャとして呼び出せるようにします。 こちらのサンプルでは、^scoreDetails グローバルに Java から渡されたリスト形式の gamesList をセットしています。 ※後程おまけのサンプルで使用するリスト型のプロパティ FavoriteColors も追加しています。
Class User.ListTest Extends %Persistent
{
Property Name As %String
Property FavoriteColors As list Of %String;
ClassMethod writeTest(name As %String, gamesList As %List) As %Integer [ SqlProc ]
{
set ^scoreDetails(name,"gamesList") = gamesList
quit 1
}
}
2. Java のコードを用意します。今回は、JDBCを使用する方法と、Native API for Java を使用する方法をご紹介します。
★JDBCでストアドプロシージャを実行するサンプル
import java.sql.*;
import java.util.*;
import com.intersystems.jdbc.*;
public class SListTestIRIS1 {
public static void main(String[] args) throws Exception {
String url = "jdbc:IRIS://127.0.0.1:1972/USER";
IRISDataSource dataSource = new IRISDataSource();
dataSource.setURL(url);
dataSource.setUser("username");
dataSource.setPassword("password");
IRISConnection connection = (IRISConnection) dataSource.getConnection();
IRISList list = new IRISList();
list.add("basketball");
list.add("tennis");
//list.set(1,"basketball"); // add, set どちらの方法でもOK
//list.set(2,"tennis");
PreparedStatement cstmt = connection.prepareStatement("{ call SQLUser.ListTest_writeTest(?, ?) }");
cstmt.setString(1, "David");
cstmt.setBytes(2,Arrays.copyOf(list.getBuffer(),list.size())); // 現時点ではIRISListをそのまま渡せないためArraysにコピー
//cstmt.setBinaryStream(2, new java.io.ByteArrayInputStream(list.getBuffer()),list.size()); // 4.3MB以上のbyte[] を取り扱うときはこちら
cstmt.execute();
return;
}
}
実行結果:
USER>zw ^scoreDetails
^scoreDetails("David","gamesList")=$lb("basketball","tennis")
★Native APIでクラスメソッドを呼び出すサンプル
import com.intersystems.jdbc.*;
public class SListTestIRIS2 {
public static void main(String[] args) throws Exception {
String url = "jdbc:IRIS://127.0.0.1:1972/USER";
IRISDataSource dataSource = new IRISDataSource();
dataSource.setURL(url);
dataSource.setUser("username");
dataSource.setPassword("password");
IRISConnection connection = (IRISConnection) dataSource.getConnection();
// create IRIS Native object
IRIS iris = IRIS.createIRIS(connection);
IRISList list = new IRISList();
list.add("basketball");
list.add("cricket");
//list.set(1,"basketball"); // add, set どちらの方法でもOK
//list.set(2,"tennis");
iris.classMethodVoid("User.ListTest", "writeTest", "Nicole", list);
return;
}
}
実行結果:
USER>zw ^scoreDetails
^scoreDetails("Nicole","gamesList")=$lb("basketball","cricket")
※おまけ
INSERT で文字列のリストを設定する場合、以下のような単純な方法で行うことができます。
List Of %String のプロパティは、値をカンマで区切り、二重引用符で囲んだ単純な文字列として渡すことができます。
import java.sql.*;
import com.intersystems.jdbc.*;
public class SListTestIRIS3 {
public static void main(String[] args) throws Exception {
String url = "jdbc:IRIS://127.0.0.1:1972/USER";
IRISDataSource dataSource = new IRISDataSource();
dataSource.setURL(url);
dataSource.setUser("username");
dataSource.setPassword("password");
IRISConnection connection = (IRISConnection) dataSource.getConnection();
PreparedStatement insert = connection.prepareStatement("INSERT INTO SQLUser.ListTest (name, favoritecolors) " + "VALUES (?,?)");
insert.setString(1, "InterSystems, Japan");
insert.setString(2, "\"red\",\"orange\",\"yellow\",\"green\",\"blue\",\"purple\"");
int rowsAffected = insert.executeUpdate();
return;
}
}
実行結果:
USER>d $SYSTEM.SQL.Shell()
SQL Command Line Shell
----------------------------------------------------
The command prefix is currently set to: <<nothing>>.
Enter <command>, 'q' to quit, '?' for help.
[SQL]USER>>select * from SQLUser.ListTest
1. select * from SQLUser.ListTest
ID FavoriteColors Name
1 $lb("red","orange","yellow","green","blue","purple") InterSystems, Japan
1 Rows(s) Affected
statement prepare time(s)/globals/cmds/disk: 0.0629s/40013/185744/15ms
execute time(s)/globals/cmds/disk: 0.0014s/2/816/0ms
cached query class: %sqlcq.USER.cls9
---------------------------------------------------------------------------
[SQL]USER>>
記事
Toshihiko Minamoto · 2022年3月24日
この記事では、CSP Web アプリケーションを使用して、コードで認証、承認、および監査を行う方法と、Web アプリケーションを有効化/無効化および認証/認証解除する方法について説明します。
* オンラインデモは、クラウド(https://dappsecurity.demo.community.intersystems.com/csp/user/index.csp)にあります(SuperUser | SYS)。
* 先に進む前に、動画をご覧になることをお勧めします(https://www.youtube.com/watch?v=qFRa3njqDcA)。
アプリケーションのレイアウト

## **認証から始めましょう**
認証は、InterSystems IRIS® に接続しようとするユーザーや他のエンティティの ID を検証します。 よく言われるように、認証は、ユーザーがユーザーが言う通りの本人であることを証明する方法です。
ユーザーを認証する方法にはいくつかあり、それぞれが認証方法として知られています。 InterSystems IRIS では、以下のような多数の認証方法をサポートしています。
Kerberos — Kerberos プロトコルは、セキュリティで保護されていないネットワークを使用するサービスに安全な認証を提供するために設計されました。 Kerberos はユーザーの認証にチケットを使用し、ネットワークでのパスワードの交換を回避しています。
オペレーティングシステムベース — OS ベースの認証は、各ユーザーのオペレーティングシステムの ID を使用して、InterSystems IRIS に対してユーザーを識別します。
インスタンス認証 — インスタンス認証では、InterSystems IRIS はユーザーにパスワードを求め、提供されたパスワードのハッシュと InterSystems IRIS が保存している値を比較します。
LDAP(Lightweight Directory Access Protocol) — LDAP では、InterSystems IRIS は LDAP サーバーとして知られる中央レポジトリにある情報に基づいて、ユーザーを認証します。
委任認証 — 委任認証は、カスタマイズされた認証方法を作成する方法を提供します。 アプリケーション開発者が、委任された認証コードの内容を完全に制御します。
私は、[インスタンス認証](https://docs.intersystems.com/healthconnectlatestj/csp/docbook/DocBook.UI.Page.cls?KEY=GAUTHN_instanceauthe)を使用しています。ユーザー作成には、以下の ObjectScript コマンドを使用できます。
&sql(CREATE USER TestUser IDENTIFY BY demo)
demo パスワードを使用する TestUser を作成しました。
* * *
## 監査
ユーザーを作成すると、そのレコードは、以下の ObjectScript コマンドを使用して監査データベースにも追加されます。
Do $SYSTEM.Security.Audit("%System","%Security","UserChange","User:TestUser | Password:demo","Audit Log inserted from Data_APP_Security")
.png)
次の関連ドキュメント(監査ガイド)をお読みください: https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=AAUDIT
##
**承認**
認証が完了したら、ロールを作成してそのロールに権限を付与し、ロールとユーザーをリンクする必要があります([承認](https://docs.intersystems.com/latestj/csp/docbook/DocBook.UI.Page.cls?KEY=TSQS_Authorization))。 これは、3 段階で行います。
**ステップ 1: 以下の ObjectScript コマンドを使用して、ロールを作成します。作成するロールは ReadWrite ロールです。**
&sql(CREATE ROLE ReadWrite)
**ステップ 2: テーブルに対する SELECT、UPDATE、INSERT 権限をロールに付与します。scw.Patient テーブル権限を ReadWrite ロールに割り当てます。**
&sql(GRANT SELECT,UPDATE,INSERT ON scw.Patient TO ReadWrite)
**ステップ 3: ロールをユーザーに付与します。ReadWrite ロールを TestUser ユーザーに割り当てます。 **
&sql(GRANT ReadWrite To TestUser)
* * *
## **Web アプリケーションの有効化/無効化**
以下の ObjectScript コードを使用して、Web アプリケーションを有効化または無効化することができます。
New $Namespace
Set $Namespace = "%SYS"
Set App = ##class(Security.Applications).%OpenId("/terminal")
Set App.Enabled=0
Do App.%Save()
ここで「/terminal」はアプリケーションの名前です。 アプリケーションは、「App.Enabled」を 0 に設定することで無効化、それを 1 に設定することで有効化することができます。
* * *
## Web アプリケーションの認証/認証解除
以下の ObjectScript コードを使用して、認証を設定できます。
New $Namespace
Set $Namespace = "%SYS"
Set App = ##class(Security.Applications).%OpenId("/terminal")
Set App.AutheEnabled=0
Do App.%Save()
ここで「/terminal」はアプリケーションの名前です。 認証は、「`App.AutheEnabled"`」プロパティを使用して設定できます。 以下の数値を設定可能です。
property AutheEnabled as Security.Datatype.Authentication [ InitialExpression = 64 ];
Authentication and Session mechanisms enabled (CSP Only).
Bit 2 = AutheK5API
Bit 5 - AutheCache
Bit 6 = AutheUnauthenticated
Bit 11 = AutheLDAP
Bit 13 = AutheDelegated
Bit 14 = LoginToken
Bit 20 = TwoFactorSMS
Bit 21 = TwoFactorPW
以上です!
記事
Mihoko Iijima · 2020年12月7日
これは、InterSystems FAQサイトの記事です。
SELECT ... FOR UPDATE は明示的な行ロック取得の方法として多くの RDBMS で実装されているため、この機能を使われているケースも多いと思います。
このシンタックスは InterSystems 製品ではエラーにはなりませんが、期待されるような行ロックの取得は行われません。
この記事では同等の機能を実現する方法をご紹介します。
DECLARE CURSOR C1 IS
SELECT Name FROM Person WHERE Name LIKE 'A%' FOR UPDATE
OPEN C1
LOOP FETCH C1 INTO name
... name を表示
... 終了ならLOOPをEXIT
END LOOP
CLOSE C1
上記のようなSQL文は、下記のSQL文で代替可能です。
※下記2行目のUPDATE文の実行により対象行に対して排他ロックがかかるため、他DBの動作と異なる点ご注意ください。
&SQL(START TRANSACTION ISOLATION LEVEL READ COMMITTED)
&SQL(UPDATE Person SET ID=ID Where Name like 'A%')
&SQL(DECLARE C1 CURSOR FOR SELECT ID,Name into :id,:name FROM Person Where Name like 'A%')
&SQL(OPEN C1)
&SQL(FETCH C1)
While (SQLCODE = 0) {
Write id, ": ", name,! &SQL(FETCH C1)
}
&SQL(CLOSE C1)&SQL(COMMIT)
メモ:&SQL() は、埋め込み SQL と呼び、サーバ側ロジックに SQL 文を埋め込みたい場合に利用できる記述方法です。詳細はドキュメントをご参照ください。
記事
Hiroshi Sato · 2020年11月23日
これはInterSystems FAQ サイトの記事です。
変数等命名規約に関して、InterSystems自体が定めている規則の様なものはありません。
しかし、チームで開発を行う際には、何らかの命名規約を作ることをお勧めします。
一般的には、変数名から使用目的が容易に想像できる様な名前付けが好ましいです。
名前の長短で、実行性能には有意な差はないと考えて結構ですので、一目見て内容が理解しやすく、他の名前と明確な区別ができるよう、ある程度の長さを持った命名を心がけることをお勧めします。
また、先頭のアルファベットを大文字にする、単語の先頭は大文字にするというのが一般的です。しかし、昨今は、Javaで良く使われる、先頭は小文字で初めて、途中の単語の始まりを大文字にするという命名規約を使う開発者も増えてきました。
さらに変数のタイプ(一時変数、パラメータなど)がわかるように、先頭の文字で表現する方法もよく使われます。(例: tSC,pLengthなど)
お知らせ
Mihoko Iijima · 2021年5月20日
これは InterSystems FAQ サイトの記事です。
お客様のシステムで発生した障害に対処するための製品修正や社内のコードレビューで新たに発見された潜在的な問題に対応するための修正などは、問題の重要度(運用に支障をきたす、アプリケーションの動作に影響があるなど)に応じて、順次新しいメジャーバージョン、メンテナンスバージョンに取り込まれていきます。
しかしながら、新しいバージョンのリリースには所定の時間が必要ですので、そのリリース前に該当する修正だけを適用したいというご要望にお応えするために InterSystemsではアドホックと呼んでいる応急パッチを提供することも可能です。
しかしながら、この対応はあくまでも応急処置であり、その問題が対処されたバージョンがリリースされた後には、そのバージョンをご使用いただくことを推奨致します。
以下の関連情報もぜひご参照ください。
セキュリティ脆弱性に関する対応について
製品サポート対応について
記事
Mihoko Iijima · 2021年6月9日
これは InterSystems FAQ サイトの記事です。
管理ポータルで設定できるメモリ関連の項目は、以下の通りです。(項目としては他にもありますが、ここでは、ほとんど設定する必要のないものについては記載していません。)
管理ポータル [ホーム] > [システム管理] > [構成] > [システム構成] > [メモリと開始設定]
古いバージョンのメニューは以下の通りです。
【バージョン5.1~2010.x】システム管理ポータル [ホーム] > [構成] > [メモリと開始設定] の設定内容* データベースキャッシュ用メモリ* ルーチンキャッシュ用メモリ 【バージョン2011.1.0~】管理ポータル [ホーム] > [システム管理] > [構成] > [追加の設定] > [メモリ詳細設定]
【バージョン 5.1~2010.x】システム管理ポータル [ホーム] > [構成] > [メモリ詳細設定] の設定内容* 一般メモリヒープ【gmheap】* ロックテーブル【locksiz】* IJCバッファ【ijcbuff】* IJCデバイス【ijcnum】※カテゴリ:IO* 照合テーブル最大数【nlstab】
設定の詳細については、添付の PDF をご参照ください。
関連記事/FAQトピック
InterSystems製品のプロセスが使用するメモリ量を教えてください。
最大ネームスペース数を教えてください。
記事
Makiko Kokubun · 2021年6月15日
*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
FHIR プラットフォームとして InterSystems IRIS for Health を選択する利点の一つは、クラウド/オンプレミスを含む豊富なプラットフォームの選択肢です。
インターシステムズは新しい選択肢の一つとして、FHIRマネージドサービスである”FHIR Accelerator Service”をまずは米国内でリリースします。このサービスを活用するとユーザはすぐにマネージド環境をプロビジョニングしてFHIRサービス開発/実行環境を入手することができます。 この動画では、AWSクラウド上でホストされるこのサービスについてデモを交えてご紹介しています。
この開発者コミュニティでは他にも IRIS の FHIR 機能に関連した多くの記事を公開しています。 FHIR にご興味ある方はぜひご覧ください。
FHIR R4 リソースリポジトリを簡単にお試しいただける開発環境テンプレートのご紹介
Azure 上で IRIS for Health をデプロイし、FHIR リポジトリを構築する方法
その他FHIR関連記事 (#FHIRタグ)
お知らせ
Mihoko Iijima · 2022年4月24日
開発者のみなさん、こんにちは!
2022年3月9日開催「InterSystems Japan Virtual Summit 2022」のセッション「FHIR SQL Builder」のアーカイブを YouTube に公開いたしました。
(プレイリストはこちら)
日本でも徐々に広がりを見せている HL7 FHIR。FHIR を活用したプロジェクトも着実に増えてきています。
取得した FHIR データをどのように利用するのか。その中で、FHIR データを使用して分析したいというニーズは必ず出てくるかと思います。
InterSystems では、FHIR データ分析を容易に可能にする新機能「FHIR SQL Builder」を発表いたしました。
この機能を利用することにより、FHIR リポジトリに格納したデータを通常の SQL で取り出し利用することが可能になります。
この機能の概要と使用方法をデモをまじえてご紹介いたします。
※ FHIR SQL Builder は、現在開発中機能であるため、メニュー名や画面イメージなどが将来変更される場合もあります。予めご了承ください。
【目次】
01:00 FHIRに関する国内の動向
04:00 FHIR SQL Builder のご紹介
10:03 デモ
お知らせ
Mihoko Iijima · 2022年5月15日
開発者のみなさん、こんにちは!
2022年3月9日開催「InterSystems Japan Virtual Summit 2022」のセッション「VSCode、Jenkinsを使用した CICD 環境の構築」のアーカイブを YouTube に公開いたしました。
(プレイリストはこちら)
IRIS アプリケーションの開発では、どのような開発環境、テスト環境を構築されてますでしょうか?
このセッションでは VSCode で開発した複数の Windows サーバで通信を行うプログラムを例に Jenkins の環境構築とインストールキットの作成やテストを自動化する方法について説明します。
また、IRIS の %UnitTest クラスを Jenkins で判別させるツールや、バッチコマンドから IRIS の処理を実行するツールを紹介します。
ぜひ動画をご参照ください。
【目次】
01:06 CICD とは
01:31 デモでご紹介する開発環境のシステム構成
↓プログラムのリポジトリ↓ https://github.com/miniclub/IRISUtilsTest.git
03:18 VSCode、Jenkins のインストール(デモ)
ご参考:VSCodeを使ってみよう
12:08 InterSystems ObjectScript Package Managerのインストールのデモ
https://openexchange.intersystems.com/package/ObjectScript-Package-Manager
↓loader-v2.0.0.zip↓ https://github.com/miniclub/loader/releases/tag/v2.0.0
14:39 Jenkins ジョブの作成、pipeline記述方法とデモ
↓プログラムのリポジトリ↓ https://github.com/miniclub/IRISUtilsTest.git
26:43 まとめ
記事
Nobuyuki Hata · 2023年7月10日
最近人気上昇中のプログラミング言語Python、ご存じのとおりIRISでは2通りの使い方が出来ます。
組み込みPython(Embedded Python)
PythonコードはIRISプロセス内でObjectScriptコードと並列に実行
具体的には
IRISクラス内のメソッド
SQL関数とストアドプロシージャ
ターミナルからPythonシェルを起動
irispythonコマンド実行
が該当します。
ネイティブAPI(Native API)
IRISの外からグローバルへのアクセス、クラスメソッドを呼び出し
上の4種類以外は全てネイティブAPIを使用します。
Pythonコードが実行される場所でIRISへのアクセス手段が決まりますが、ライブラリ名が双方とも”iris”のため注意が必要です。
* 従来からのirisnativeはDeprecated(非推奨)となりました
サンプルコードを探す時やドキュメントを参照する時、どちらのPython APIを使用しているか頭の片隅にあると予期せぬエラーに遭遇する機会が減るかも知れません。
組み込みPythonのirisパッケージ
組み込み Python | InterSystems IRIS Data Platform 2022.1
ネイティブSDKのirisパッケージ
Native API for Python | InterSystems IRIS Data Platform 2022.1
記事
Mihoko Iijima · 2025年1月13日
これは InterSystems FAQ サイトの記事です。
<ALARM>エラーは、クライアントアプリでタイムアウトが発生し、その結果InterSytemsサーバのプロセスがあわせて終了している状況をあらわしています。
クライアントアプリで、タイムアウト設定を無効にすることで回避できる可能性があります。
例えば、クライアントアプリから初回実行するSQL文がある場合、初回実行時のみInterSystems製品内部にクエリキャッシュ(=コンパイル済クエリ)を生成するため(※1)通常実行よりも時間がかかります(2回目以降の実行ではコンパイルは行われません)。
例えば、コンパイルに非常に時間がかかるSQL文の初回実行をクライアントアプリから命令し、タイムアウト以内に応答が戻らない場合 <ALARM> エラーが発生します。
※1:IRIS2020.1以降では埋め込みSQLで記述されたクエリも、初回実行時にコンパイルされます(2019.1以前では、埋め込みSQLを含むクラス/ルーチンがコンパイルされるタイミングでSQLもコンパイルされます)。
記事
Hiroshi Sato · 2020年10月29日
これはInterSystems FAQ サイトの記事です。
$IsObject()を使用して判別できます。
調べたい変数をvとすると、
$IsObject(v)=1 // vはOREF$IsObject(v)=0 // vはOREFではない$IsObject(v)=-1 // vはOREFだが、有効なオブジェクトを指していない
となります。
vが未定義の場合は、$IsObject(v)はUNDEFINEDエラーとなりますので、ご注意ください。
UNDEFINEDエラーを防止するには、次のように$Getを使用することをお勧めします。
$IsObject($Get(v))
記事
Hiroshi Sato · 2021年2月1日
これは InterSystems FAQ サイトの記事です。
$IsObject()を使用して判別できます。 調べたい変数をvとすると、
$IsObject(v)=1 // vはOREF$IsObject(v)=0 // vはOREFではない$IsObject(v)=-1 // vはOREFだが、有効なオブジェクトを指していない
となります。
vが未定義の場合は、$IsObject(v)はUNDEFINEDエラーとなりますので、ご注意ください。
UNDEFINEDエラーを防止するには、次のように$Getを使用することをお勧めします。
$IsObject($Get(v))
記事
Megumi Kakechi · 2021年3月2日
これは InterSystems FAQ サイトの記事です。
管理ポータル:システムオペレーション > データベース にあるオプションボタン(ラジオボタン)「空き容量ビュー」で表示される内容は、システムクラス SYS.Database のFreeSpace クエリで取得可能です。
次のようなコードでクエリを実行します。
例:(%SYSネームスペースにて作成、実行します)
/// ZISJ.mac
Set stmt=##class(%SQL.Statement).%New()
Set status=stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
Set rs=stmt.%Execute()
While rs.%Next() {
Write !
For i=1:1:9 {
Write rs.%GetData(i),","
}
}