検索

クリアフィルター
記事
Megumi Kakechi · 2021年1月6日

Webサービスでエラー発生時にエラー詳細情報を取得する方法

これは InterSystems FAQ サイトの記事です Web サービス(SOAP)またはREST で IIS を経由してクライアントにエラー応答する際、既定では IISが生成するデフォルトのエラーページ( HTTP 500 エラー )が返されます。 SoapFaultなど、サーバ側で出力したエラーの詳細情報は返されません。 IIS7 以降、WebクライアントがWeb サービスの障害の詳細情報を取得するための設定オプションが追加されました。 HTTP ステータスコードがエラーの場合に、既存の応答をどうするかを existingResponse 属性で指定することができます。 こちらの値を、既定の Auto から PassThrough に変更することで、エラーの詳細情報が返されるように変更できます。※設定変更後、IISの再起動が必要です。 詳細や設定手順については、以下ドキュメントをご参照ください。Microsoft IIS 7 以降の設定手順について【IRIS】 Microsoft IIS 7 以降の設定手順について ※web.config ファイルの手動編集よりも、IIS マネージャに組み込まれている構成エディタ を使用する方法がエラーが少なく安全です。 ※HTTP エラー について
記事
Megumi Kakechi · 2020年12月13日

%ZSTARTルーチンの内容に不具合がありインスタンスが起動しなくなった場合の対処法

これはInterSystems FAQ サイトの記事です %ZSTARTルーチンを インスタンス開始時に起動しないように構成設定用ファイルを手動で変更します。 【注意】インスタンスの起動環境の変更は、通常管理ポータルで行うものなので、以下に説明する方法は、%ZSTART の SYSTEM ラベルの動作を無効化する方法以外では利用しないようにしてください(別のパラメータを誤って修正してしまった場合、起動できなくなる可能性がありますのでご注意ください)。 1. インスタンス のインストールディレクトリ以下にある構成設定用ファイル(cache.cpf/iris.cpf)をテキストエディタで開きます。 ※構成ファイルは、事前にバックアップ(コピー)していただくことを推奨します。 2. [Startup]セクションにあるSystemStartの値を0に変更し、保存します。 3. ファイル変更後、一旦 インスタンスを通常の方法で停止し、再度開始してください。 SystemStart パラメータの詳細については、下記ドキュメントについてもご参照ください。パラメータ・ファイル・リファレンス_SystemStart【IRIS】
記事
Mihoko Iijima · 2021年4月22日

ユーザ定義エラーを作成する方法のご紹介

これは InterSystems FAQ サイトの記事です。 ユーザ定義エラーとして使用したいエラーコードと対応するメッセージを記述したXMLを用意します。 なお、エラーコードは負の整数で設定してください。 <?xml version="1.0" encoding="UTF-8" ?> <MsgFile Language="ja"> <MsgDomain Domain="UserErrors"> <Message Id="-111" Name="MyError">エラーが発生しました</Message> <Message Id="-222" Name="MyError2">エラーが発生しました2</Message> </MsgDomain> </MsgFile> XML ファイルが作成できたら使用したいネームスペースにロードします。 set x=##class(%MessageDictionary).Import("error.xml") ロード完了後、次のようなコマンドでユーザ定義エラーを取得、表示することができます。 USER>set error=$system.Status.Error(-111) // エラーコード -111 を指定してエラーを作成 USER>write $system.Status.GetErrorText(error) // エラーからエラーメッセージを出力 エラー <UserErrors>-111: エラーが発生しました USER>do $system.Status.DecomposeStatus(error,.val) // エラーの情報を配列変数にセット USER>zwrite val val=1 val(1)="エラー <UserErrors>-111: エラーが発生しました" val(1,"caller")="zError+1^%SYSTEM.Status.1" val(1,"code")=-111 val(1,"dcode")=-111 val(1,"domain")="UserErrors" val(1,"namespace")="TEST" val(1,"param")=0 val(1,"stack")=$lb("e^zError+1^%SYSTEM.Status.1^1","e^^^0")
記事
Hiroshi Sato · 2021年9月23日

レコードマップで何ができるか?

これは InterSystems FAQ サイトの記事です。レコード・マップは、区切り文字付きのレコードや固定幅のレコードを含むファイルをInteroperability機能で使用するメッセージクラスへマッピングしたり、Interoperability機能のメッセージクラスからテキストファイルへマッピングする作業を効率的に行うための機能です。 レコードマップのマッピング定義は管理ポータルで作成でき、CSVファイルを読み込ませながら定義するCSVレコードウィザードも提供しています。 プロダクションでレコードマップを利用する場合は、レコードマップ用ビジネス・サービス、またはビジネス・オペレーションを追加し、作成したレコードマップ定義クラスを指定すれば完成です。 使用例は、以下から取得できます。 レコードマップサンプル レコードマップの詳細な説明は、以下のドキュメントをご参照ください。 レコード・マッパーの使用法について【IRIS】Ensemble レコード・マッパーの使用法について
記事
Hiroshi Sato · 2021年12月28日

コンパイルフラグについて

これは InterSystems FAQ サイトの記事です。 コンパイル時のフラグや修飾子の記号と意味については、以下ドキュメントをご参照ください。 コンパイルフラグについて【IRIS】 コンパイルフラグについて なお、開発環境のスタジオやVisual Studio Codeでは、開発環境の設定画面でフラグを変更できます。 スタジオは、[ツール] > [オプション] > [コンパイラ] > [フラグと最適化] VSCodeは、[View] > [Command Palette...] ターミナルでコンパイルを実行するときは $system.OBJ.CompileAll() などのシステムユーティリティが利用できます。コンパイルフラグを引数に指定しない場合、デフォルトのコンパイルフラグが利用されます。デフォルトのフラグは $system.OBJ.ShowFlags() で確認できます。 USER>do $system.OBJ.ShowFlags() b - Include sub classes. c - Compile. Compile the class definition(s) after loading.   <省略>Default flags for this namespace =dilYou may change the default flags with the SetFlags(flags,system) classmethod. デフォルトのコンパイルフラグを変更するには、$system.OBJ.SetFlags() メソッドを使用します。引数にデフォルトフラグに指定したいフラグを文字列として指定します。戻り値に設定後のフラグが文字列で返ります。 USER>write $system.OBJ.SetFlags("ck")=cdikl
記事
Hiroshi Sato · 2021年9月2日

$ZF(-100)の使用方法

これは InterSystems FAQ サイトの記事です。 $ZF(-100) のコマンドは、以下のフォーマットで使用します。 $ZF(-100, フラグ, コマンド名, コマンドの引数) OSコマンドを実行する場合は、「/shell」フラグが必要です。例えば mkdir であれば、次のように使用します。 // mkdir C:\temp\newdir Write $ZF(-100, "/shell", "mkdir", "C:\temp\newdir") コマンドの引数が複数ある場合は、以下の例のように引数の数だけ二重引用符で括ってカンマ区切りで指定します。 // move C:\temp\a.txt C:\temp\a2.txt Write $ZF(-100, "/shell", "move", "C:\temp\a.txt", "C:\temp\a2.txt") // net use Z: \\filesrv\public /user:user password Write $ZF(-100, "/shell", "net", "use", "Z:", "\\filesrv\public", "/user:user", "password") また、同期・非同期実行は以下のように使用します。 // call BATPATH バッチファイルを呼び出します set BATPATH="C:\temp\test.bat" set status = $ZF(-100, "/shell", "call", BATPATH) // 同期 set status = $ZF(-100, "/shell /async", "call", BATPATH) // 非同期 詳細は以下のドキュメントをご覧ください。$ZF(-100) の使用方法について【IRIS】 $ZF(-100) の使用方法について 尚、$ZF(-100) コマンドが使用可能なバージョンは、January 2018 SV の脆弱性に対応している以下のバージョンになります(2019年1月現在)。 * Caché / Ensemble * 2013.1.7.974.6 2014.1.5.851.3 2015.1.4.803.6 2015.2.5.953.3 2016.1.4.104.2 2016.2.3.903.4 2017.1.3.317.0 2017.2.1.801.3 2017.2.2.865.0  2018.1以降の全てのバージョン
記事
Hiroshi Sato · 2021年8月30日

【IRIS】サーバーを移行する際にコピーが必要な設定情報

これは InterSystems FAQ サイトの記事です。 何らかの理由でサーバー移行が必要になった際に、移行前の環境から移行後の環境に設定情報をコピーすることで設定作業を軽減できます。 以下の設定情報を移行できます。 iris.cpf SQLゲートウェイ設定 Webゲートウェイ設定 *注1 IRISSYSデータベースに保存しているユーザー作成ルーチンなど *注2 セキュリティ設定 タスク設定 注1 パスワードを設定している場合には、パスワードのみ手動で再設定が必要です。注2 ^%ZSTART, ^ZMIRRORルーチンなど 優先接続サーバー設定に関しても、物理的には移行可能ですが、Windowsのレジストリー情報をコピーする必要があります。 レジストリー情報をコピーして他システムに移行する方法は通常推奨される方法ではありません。 各設定のエクスポート/インポート方法は、添付ファイルの内容をご確認ください。 また、現在は英語ドキュメントのみの公開となっておりますが、以下のドキュメントもあわせてご覧ください。 Server Migration Guide
記事
Megumi Kakechi · 2021年8月26日

クラス定義のコンパイルで、「エラー #5368:クラス名 のオブジェクトが、1プロセスでインスタンス化されています。」のエラーが出ます

これは InterSystems FAQ サイトの記事です。 こちらは、コンパイル時に既にそのクラスのインスタンスを開いている場合に起こるエラーです。 対処方としては以下の2つの方法があります。 インスタンスを開いているプロセスまたはアプリケーションを終了する スタジオのビルドメニュのコンパイルオプション:コンパイルフラグ “使用中のクラスをコンパイル” をチェックしコンパイルを行う インスタンス化しているプロセスを特定したい場合は、以下のサンプルルーチンをお試しください。 /// Test.mac search(classname) public { Set pid="" Set pid=$order(^$Job(pid)) While pid'="" { Do checkVars(pid,classname) Set pid=$Order(^$Job(pid)) } } checkVars(pid,string) { Set $ztrap="err" Set var="" For { Set var=$zu(88,1,pid,var) q:var="" Set val=$zu(88,2,pid,var) If val[string { Write !,pid,":",var," = ",val,! } } Quit err Set $ztrap="" Quit } こちらのサンプルルーチンは、ユーザプロセスのローカル変数を検索して指定したクラスを使用しているか確認します。 ≪実行例≫ USER>do search^Test("Test.Person") 2352:p1 = 1@Test.Person6324:p2 = 2@Test.Person ※この場合は、Pid=2352 と Pid=6324 のプロセスが Test.Person を使用しています。
お知らせ
Mihoko Iijima · 2022年5月22日

【アーカイブ配信のお知らせ】オープンソースだけで IRIS on Kubernetes を動かそう(2022年3月9日開催)

開発者のみなさん、こんにちは! 2022年3月9日開催「InterSystems Japan Virtual Summit 2022」のセッション「オープンソースだけで IRIS on Kubernetes を動かそう」のアーカイブを YouTube に公開いたしました。 (プレイリストはこちら) Docker は使いこなせるようになってきたけど、Kubernetes はなかなか手を出すチャンスがないな、という方々を対象に手持ちの Windows/PC 上に K8s 環境を構築して色々試すことを最終目標としたセッションです。 開発者コミュニティの記事「microk8sでKubernetesをお手軽に試す」との紙面連動です。 ぜひご参照ください。 【目次】 01:43 Kubernetes について 参考動画:KubernetesでのIRISの運用とそれを支える仕組み 05:48 Microk8S 利用の動機付け 09:50 デモ 記事:microk8sでKubernetesをお手軽に試す の内容に沿ってデモを動かしています。 14:00 デモ - IRIS起動の確認 15:35 デモ - MicroK8S 環境をクラスタ構成にする 17:32 デモ - Longhorn をデプロイする 19:28 デモ - Longhorn を Persistent Volume としてIRISが使用するように構成する 20:58 デモ - ノード障害発生時の動作を確認 23:15 まとめ ↓参考となるオンラインラーニング(英語)↓ https://learning.intersystems.com/course/view.php?name=KubernetesExercise
記事
Hiroshi Sato · 2022年8月8日

TCP アダプタの StayConnected の設定に関する注意点

これは InterSystems FAQ サイトの記事です。 TCP アダプタを使用するビジネスホストの [接続中を維持(StayConnected)]と[プールサイズ(PoolSize)]のデフォルト設定値は以下の通りです。 StayConnected = -1(常時接続タイムアウト無し)PoolSize = 1 ネットワークの問題でビジネスホストへの接続が切断された場合に、プロダクション側では切断されたことを検知できないため新しい接続を受け付けません。 またこの状況の時、イベントログにも記録されません。 StayConnected が デフォルト値(-1)の場合、接続がタイムアウトしないため新しい接続を受け付けるためには、ビジネスホストを再起動する必要があります。 このような状況を回避するためには、StayConnected を 0 以上の値に設定することを推奨します。 例えば300(秒)に設定した場合、TCP ビジネスホストは 300 秒以上新たなメッセージを受信しなかった場合に、自動的に接続を切断して再接続できます。 処理量の多いシステムの場合には、通常 StayConnected の値をさらに小さな値、例えば 5(秒)に設定します。
お知らせ
Seisuke Nakahashi · 2020年8月21日

IRIS 2020.1 日本語ドキュメント公開

日本語ドキュメント公開 このたび、InterSystems IRIS 2020.1 の日本語ドキュメントが完成しました。それぞれ以下のWEBサイトで公開をしています。 IRIS 2020.1 IRIS for Health 2020.1 Health Connect 2020.1 ページ内の「すべてのドキュメント」アイコンをクリックすることで、各技術コンテンツを参照いただけます。 キューブから日本語ドキュメントを参照する IRIS for Windows では、以下の設定を行うことで、キューブの[ドキュメント]をクリックしたときに、上記の日本語ドキュメントページを表示させることが可能となります。 <IRIS installdir>\httpd\conf\httpd-doc.conf をエディタで開き、Redirect先のURL(右側)を、日本語ドキュメントのもに書き換える。 具体的には、URLの最後 docbook を docbookj に変更する IRISを再起動する たとえば、IRIS 2020.1 の場合、以下のように httpd-doc.conf を編集することで、 キューブの[ドキュメント]をクリックすると、日本語ドキュメントページが表示されるようになります。 ぜひ日本語ドキュメントをご活用いただき、IRIS製品をお使いくださいませ!
記事
Tomoko Furuzono · 2025年3月25日

ORDER BY で並べ替える際の照合順を調整する

これは、InterSystems FAQサイトの記事です。 SQLでクエリ実行時、ORDER BYで並べ替えをする場合、各RDBMSによって、照合順が異なることがあります。 たとえば、NULLと空文字の混じった文字列のカラムを並べ替える場合、 IRIS SQLでは、既定の照合順は下記のようになりますが、 NULL, 空文字, 0, 00, 01, 1, 10, 100, 11, A, a, B, b Oracleでは、下記のような照合順になります。 空文字, 0, 00, 01, 1, 10, 100, 11, A, B, a, b, NULL 複数のDB由来のデータを取り扱う際には、このような照合順の違いを合わせたい場合があります。 IRISの場合、既定の文字列照合はSQLUPPERですが、照合タイプを変更することによって、照合順を変えることが出来ます。ドキュメント:照合 上記のIRIS SQLとOracleの違いを合わせるためには、照合タイプを「SQLSTRING」に設定し、インデックスを作成します。 Property TestColumn As %String(COLLATION = "SQLSTRING"); Index IdxTest On TestColumn; 但し、Nullについてはこの方法では対応できないため、Nullの照合順を合わせたい場合には、ORDER BY句を下記のようにします。 ORDER BY IFNULL(TestColumn, 1, 0), TestColumn
記事
Tomoko Furuzono · 2025年4月7日

全角/半角混在文字列から指定された幅の文字列を取得する方法

これはInterSystems FAQサイトの記事です。 指定した文字列式のうち指定したフィールド幅(半角での文字数)に収まる文字数を取得する関数:$ZPOSITIONと、部分文字列を返す関数:$EXTRACTを組み合わせることによって、全角/半角混在文字列から、指定された幅の文字列を取得することが出来ます。※$Extractは文字単位で処理を行いますので、全角/半角を区別した取り扱いはできません。 構文: $ZPOSITION(<文字列式>, <フィールド幅>, <全角文字に使用するピッチ値(デフォルトは2)>) $EXTRACT(<文字列>, <開始位置>, <終了位置>) 例: //指定した文字列(str)のうち、全角=2/半角=1 の幅として、フィールド幅10(半角10文字分)に含まれる文字数を取得 USER>set str="あい1234うえお" USER>write $ZPOSITION(str,10,2) 7 //指定した文字列(str)のうち、全角=2/半角=1 の幅として、フィールド幅10(半角10文字分)に含まれる文字列を取得 USER>write $extract(str,1,$zposition(str,10,2)) あい1234う $ZPOSITION、$EXTRACTの詳細については、下記各ドキュメントページをご確認ください。 ドキュメント:$ZPOSITION(ObjectScript) ドキュメント:$EXTRACT(ObjectScript)
記事
Tomoko Furuzono · 2022年3月29日

プログラムでCSVファイルを1行ずつ読み込む方法

これは、InterSystems FAQサイトの記事です。 %SQL.Util.Proceduresクラスの CSV() プロシジャを使用することにより、実現できます。下記が使用例のコードとなります。(test.csvというファイルが c:\temp にあるという前提) Set rowtype="Name VARCHAR(50),UID VARCHAR(50), PHONE VARCHAR(50)" Set filename="c:\temp\test.csv" Set result=##class(%SQL.Statement).%ExecDirect(,"call %SQL_Util.CSV(,?,?)",.rowtype,filename) Set rset =result.%NextResult() // 全件表示したい場合は、do rset.%Display() While rset.%Next() { Write "Name:",rset.%GetData(1)," UID:",rset.%GetData(2)," PHONE:",rset.%GetData(3),! } Set rset="",result="" Quit 上記を実行することにより結果セットとして各行およびフィールドにアクセスできます。実行例: USER>do ^CSVName UID PHONE山田,太郎 0001 080-1111-1111bbb 0003 090-2222-2222ccc 0009 "050-3333-3333"ddd 0010 0120-17-19724 Rows(s) Affected %SQL.Util.Proceduresクラスのクラスリファレンスも併せてご確認ください。クラスリファレンス:%SQL.Util.Procedures.CSV() @Tomoko.Furuzono さん 情報共有ありがとうございます!ちなみに%SQL.Util.Proceduresを利用する際、開くファイルに文字コードを指定することはできますか? ご質問ありがとうございます!第6引数でTranslateTableを指定できるので、それにより実現可能です。上のコード例で指定するとすると、下記のようになります。 Set transtable="UTF8" Set result=##class(%SQL.Statement).%ExecDirect(,"call %SQL_Util.CSV(,?,?,,,?)",.rowtype,filename,transtable)
お知らせ
Toshihiko Minamoto · 2022年2月9日

製品リリースサイクルの変更

インターシステムズは、2018年からInterSystems IRISで2ストリームのリリースサイクルを採用しています(開始時のお知らせをご覧ください)。 Continuous delivery (CD) リリース —このリリースは、新機能を迅速に提供し、継続的に更新され、新機能を直ちに利用するアプリケーションの開発、およびデプロイに最適です。 Extended maintenance (EM) リリース — このリリースは、CDリリースよりも頻度は低いですが、メンテナンス・リリースの安定性を提供します。新機能をいち早く利用することよりも、メンテナンスリリースでの修正が容易であることが重要な大規模エンタープライズアプリケーションに最適です。 このアプローチについては非常に好意的なフィードバックをいただいており、人々は「鈍行列車(slow train)」と「快速列車(fast train)」という言葉を使うようになりました。 EMリリースは、大規模なオンプレミスの顧客基盤をs持つお客様やパートナーに好まれる「鈍行列車」です。 CDリリースは、最新かつ最高の機能を求めるお客様やパートナーに好まれる「快速列車」です。 他の多くのソフトウェアベンダーは、この2つのアプローチを採用しており、通常、「鈍行列車」をLTS(Long Term Support)と呼んでいます。 インターシステムズのサポートに対するアプローチは、非常に顧客中心であり、お客様がどのリリースを使用しているかに関わらず、サポートを行います。 そのため、当社ではEM(Extended Maintenance)という用語を使用しています。 当社のリリースサイクルは、当社の成長とともに進化してきました。 当初、EMのリリースはキット形式で、CDのリリースはコンテナ形式でした。 2020年には、コンテナの普及に伴い、EMリリースにキットとコンテナの両方を含めるようになりました。 その結果、EMのリリースは毎年「.1」、CDのリリースは「.2」、「.3」などとなっています。 今回の2021.2のリリースでは、その流れをもう少し進化させました。 CDリリースは、コンテナだけでなく、キット形式でも提供されるようになりました。 InterSystems IRISとInterSystems IRIS for Healthに加えて、HealthShare Health Connectをこれらのリリース・トレインに追加しました これは、お客様からの要望によるものです。 70%以上の開発者がInterSystems IRISをコンテナで使用しているにもかかわらず、MacOSやWindows上で直接開発している開発者は、快速列車へのアクセスを望んでいました。 CDリリースでのプロダクション展開も一般的になってきていますが、プロダクションでコンテナを使って実行することにあまり慣れていない顧客もいます。 Health Connectのお客様は、頻繁に出る新機能へのアクセスを望んでいました。 CDリリースの制限 CDリリースをキット形式で提供するようになったとはいえ、EMリリースとは異なります。 CDリリースは「快速列車」であり、お客様が迅速かつ容易に最新かつ最高のものに移行することを目的としています。 CDリリースにはいくつかの制限があります。 CDリリースには、メンテナンスアップデートやSVアップデートはありません。 CDリリースには、アドホック機能はありません。その代わり、次のCDリリースに移行すると、そのリリースにはすべての不具合修正とセキュリティアップデートが含まれます。 Caché または Ensemble から CD リリースへのインプレースコンバージョンはサポートされていません。 代わりに、最新の EM リリースに移行できます。当社の前世代製品であるCachéやEnsembleでアプリケーションを構築されたお客様やパートナーの皆様には、慣れ親しんだリズムに合っている「鈍行列車」をご利用いただくのがベストです。 CDリリースからのアップグレードは以下の方法に限定されています。 次のCDリリース(例:2020.2→2020.3) 次のメジャーEMリリースまたはその年のメンテナンスバージョン (2020.2→2021.1, 2020.3→2022.1, 2020.3->2021.1.1) これらの制限は新しいものではありませんが、過去にCDリリースを使用していたお客様は単にコンテナを交換していただけでした。お客様が他のものを必要とする状況に遭遇しなかっただけです。Virtual Summit 2020でインターシステムズ社の製品ライフサイクルについてのセッションを行いましたが、2ストリームアプローチはうまく機能しており、CDリリースの制限は自然なことだというフィードバックを受けました。 今回、キット形式のCDリリースを導入したことで、CDリリースとEMリリースの仕組みを皆さんに思い出していただきたいと思います。 2021.2のキット版をお使いの方は、2022.1へのアップグレードを期待してください。 そこからは、"快速列車 "に乗り続けることも、"鈍行列車 "に乗り換えることも、余計な手間をかけずにできるでしょう。