これは InterSystems FAQ サイトの記事です。

ネームスペースを管理ポータルで作成する際に、デフォルトでは、『相互運用プロダクション用にネームスペースを有効化』にチェックがついているため、そのチェックを意図的に外さない限り、新規作成したネームスペースは、インターオペラビリティ機能が有効になっています。

この機能が有効であることによる実用上の弊害(パフォーマンス等に影響する)は、特にありませんが、管理ポータル上のクラス表示にこの機能に関連するクラスが先に表示されて、ユーザー作成クラスの表示に余計な操作が必要になる等の操作上の余分な手間が発生する場合があります。

管理ポータル上でこの設定を無効にするメニューは用意されていませんが、以下の手順で無効化することができます。

- 相互運用性ネームスペースの無効化

0 0
0 6

これは InterSystems FAQ サイトの記事です。

8192文字を超える文字列をODBC経由で取得した場合に特定のODBCクライアントとの組み合わせにおいて文字列が途切れて取得されるケースが報告されています。

このような状況が発生した場合、該当するODBCデータソースの設定画面でUnicode SQLタイプをチェックすることで問題が解消されることがわかっています。

0 0
0 12

これは InterSystems FAQ サイトの記事です。

大量のレコードが含まれるテーブルに対して、select count(*) from テーブル名の応答が遅い、または応答がタイムアウトする場合には、ビットマップ・エクステント・インデックスを追加することで問題を解消することができます。

ビットマップ・エクステント・インデックスを追加する方法は、以下をご参照ください。

ビットマップ・エクステント・インデックスの追加方法

クラス定義に以下のような定義を行うことで、ビットマップ・エクステント・インデックスを追加することもできます。

0 0
0 15

これは InterSystems FAQ サイトの記事です。

ObjectScriptの%Netパッケージのライブラリクラスを利用して、ファイルを他のサーバーにアップロードすることができます。

以下のCurl コマンドと同じことを ObjectScript で実現する方法を紹介します。

curl -X POST "http://localhost/api/upload?a=123&b=999" -F file=@"C:/temp/a.csv"

クライアントのObjectScriptコードを以下の様に作成します。

0 0
0 15
記事
· 2025年3月4日 4m read
計算プロパティの使用方法2

これは InterSystems FAQ サイトの記事です。

計算プロパティを定義する際に利用可能なキーワードが複数あります。

詳細は、以下をご参照ください。

計算プロパティの定義

実際のこれらのキーワードの関連性は、少々複雑ですので具体的なコードを作成して動作を確認してみます。

以下のようなクラス定義を作成します。(プロパティとインデックス定義のみ表示します)

完全なクラス定義は以下より、ダウンロードできます。

サンプルクラス定義

0 0
0 15
記事
· 2025年3月3日 1m read
計算プロパティの使用方法1

これは InterSystems FAQ サイトの記事です。

IRISには、データ項目の値を実体として持たずに、何らかの演算処理の結果として提供する機能があります。

これを計算プロパティまたは計算フィールドといいます。

計算プロパティを定義するためには、最低限以下の手順を実行します。

プロパティ定義にSqlComputedキーワードを含めます。

プロパティ定義にSqlComputedCodeを含めて、値を算出するための処理ロジックとして含めます。

または、SqlComputedCodeを含めずに、代わりに<プロパティ名>Computationという名前のクラスメソッドを記述します。

以下は、Age(年齢)プロパティを計算プロパティとして定義した例になります。

0 0
0 17

これは InterSystems FAQ サイトの記事です。

以下の様なCurl コマンドで送信したファイルを受け取るRESTサービスを作成する方法を紹介します。

curl -X POST "http://localhost/api/upload?a=123&b=999" -F file=@"C:/temp/a.csv"

クライアントからPOSTされたファイルを受け取ってサーバーに保存するRESTサービスは以下の様に作成します。

0 0
0 17

これは InterSystems FAQ サイトの記事です。

インターオペラビリティ機能を使用してビジネスホストのビジネスロジックを実装する際に、デバッグ等の目的でログ出力を行うための専用マクロが用意されているので、ご紹介します。

以下のマクロが用意されています。

0 0
0 23

これは InterSystems FAQ サイトの記事です。

何らかの理由でサーバー移行が必要になった際に、移行前の環境から移行後の環境に設定情報をコピーすることで設定作業を軽減できます。

以下の設定情報を移行できます。

  • cache.cpf
  • SQLゲートウェイ設定
  • CSPゲートウェイ設定 *注1
  • CAHCESYSデータベースに保存しているユーザー作成ルーチンなど *注2
  • セキュリティ設定
  • タスク設定

注1 パスワードを設定している場合には、パスワードのみ手動で再設定が必要です。
注2 ^%ZSTART, ^ZMIRRORルーチンなど 優先接続サーバー設定に関しても、物理的には移行可能ですが、Windowsのレジストリー情報をコピーする必要があります。
レジストリー情報をコピーして他システムに移行する方法は通常推奨される方法ではありません。

0 0
0 19

これは InterSystems FAQ サイトの記事です。

Question:

使用中のプログラムをコンパイルして保存すると、現在そのプログラムを実行中のプロセスに影響しますか?

Answer:

実行中のルーチンはその旧バージョンをメモリー上に保持しているため、コンパイルして新しいルーチンが保存されても影響なく実行を継続できます。

クラスのメソッドについても同様です。 再度そのルーチンが呼び出された時点でコンパイルされた新しいルーチンが使用されるようになります。

0 0
0 18

Mac版IRISでは、現状Pythonのバージョンが固定(3.11)なのですが、これに付随する他製品との相性問題に遭遇しましたので報告します。

今までEmbedded Pythonは調子よく動作していたのですが、ある時から急に動作しなくなりました。

原因を調べてみると、Python3.13がインストールされ、それがデフォルトとして上書きされたため、irispythonコマンドを発行すると、それが内部で3.13を呼ぶ様になってしまったためでした。

ちなみにiris session でログインし、そこからEmbedded Pythonを実行する場合は、問題ありません。

あくまでもirispythonコマンドで直接.pyファイルを実行する場合に発生する問題です。

そしてとりあえずの対処法は、python3をpython3.11で置き換える方法です。

以下のような感じです。(どのMacでもbrewコマンドでインストールした場合、ディレクトリ構造は同じだと思いますが、違う可能性もゼロではありません)

cp /opt/homebrew/bin/python3.11 /opt/homebrew/bin/python3

1 0
0 29

日本でMacユーザーのIRIS使いがどの程度いるのかわかりませんが、圧倒的少数派なのは確かでしょう。

そのせいもあってか、Mac版のインストーラは、Windows版ほどきめ細かい対応をしてくれていません。

Windows版はインストーラが勝手に日本語のロケールを設定してくれているのですが、Mac版(おそらくLinux版も)は英語ロケールのままです。

それでも、通常の使用ではさほど問題がないといえないこともないのですが、ファイルを読んだりする場合や他にも何かと不都合があります。(何かあったような気がしますが、忘れました。)

ですので、Macユーザーは面倒ですが、管理ポータルで日本語ロケールjpuwのインストールをする必要があります。

またはターミナルでコマンド一発でもOKです。

3 2
0 46
記事
· 2024年12月18日 1m read
IRIS技術ガイド

Caché技術ガイドのいくつかをIRIS版に書き換えた文書を作成しましたので公開します。

IRISファーストステップガイド

IRISBasicTechnologyGuide

- ObjectScript操作ガイド

- オブジェクト操作ガイド

- 多次元データエンジンの概念およびアーキテクチャー

IRIS SQLガイド

3 0
2 54

REST/JSONを使ってデータを交換することが増えてきていると思いますが、POSTでIRISにデータを渡す場合に日本語が含まれる場合に皆さんどう処理していますか?

わざわざ自分でコード変換する処理を追加していませんか?

実は、あまり知られていないのですが、自動で変換する方法がありますので、紹介します。

CSPのメカニズムを使ってクライアントからデータをPOSTすると、それはCSPのRequestオブジェクトのContentプロパティに渡されます。

ContentプロパティのTypeは%CSP.Streamになっていて、このTypeのクラスリファレンスを読むと、Content-TypeがText/のときには、CharSetに基づいてコード変換が行われると示唆されています。

つまりContent-TypeがJSONの場合には、自動的な変換がされないということになります。

本当は、Content-TypeがJSONの時も変換してくれるのが一番良い(わかりやすい)のですが、残念ながらそうなっていません。

その代わりにパラメータが用意されています。

RESTのディスパッチクラスの定義に以下のパラメータを追加することで、自動コード変換を行なってくれます。

0 0
2 41

Embedded Pythonの導入に伴い、1つ嬉しいことは、直接エクセルファイルの読み書きができるようになったことです。

それでこの機能を使って、ミニ業務改革をちょこちょこ行なっているのですが、そこでちょっとハマったことを共有します。

実際この内容は実はIRISとは全く関係ないのですが、このDCコミュニティの皆さんが同じことでハマった場合に少しでも早く問題解決できるように情報共有します。

エクセルの計算式の入ったセルの値を読み取るときには、そのファイルのオープンの際にdata_only=Trueというフラグをつけないといけないのですが、そのファイルがopenpyxlで読み書きしたファイルの場合に、その計算式のセルの値(Noneとなる)がうまく読めないことがあります。

その場合には、そのファイルをエクセルで開いて再保存することで、正しく読むことができます。

以下にそのあたりの内容を説明したページがあります。

元ネタ

1 0
0 116

これは、InterSystems FAQサイトの記事です。

これは、MS-ACCESSの制限事項です。

MS-ACCESSは、インデックスが32個より多いテーブルにはリンクできません。

この問題を回避する方法として、直接テーブル(クラス)をリンクするのではなく、VIEWを使用する方法があります。

0 0
0 39

これは InterSystems FAQ サイトの記事です。

ロックテーブルの1エントリは管理領域の固定512 bytesとロック文字列情報などの可変領域から構成されます。

可変領域はロック対象のグローバルノード名に関連する情報に必要な長さ(bytes)になります。

1つのLockコマンドにつき、上記で示した長さのデータが必要です。

そしてその可変領域に必要なデータ長は、ロック対象のグローバルノード名(^xxx(xxx,xxx)) の長さに見合う16,32,64,128,256,…bytesのバケットの長さになります。

例えばロック対象のグローバルノード名が^xxx(123,"data")とすると、 ^xxx(123,"data")にデータのロケーション等のデータが付加されたものがその可変領域となり、32byteまたは64bytes(データロケーションが相応に長い場合)のバケットを使用しますので、

1 0
0 52

これは InterSystems FAQ サイトの記事です。

IRIS2023.1から導入されたgmheapとlocksizの新しいデフォルト値について紹介します。

gmheap=0は、特別な設定の必要性がないほとんどのシステム(実運用システムを含む)に適切なように設計された新しいデフォルト値です。

0に設定することで、システムがシステム全体のサイズを推測し、妥当な値を算出してくれます。

gmheap=0 に設定した場合、システムは、グローバルバッファ用に設定されたメモリの合計に3%を乗じた値を基準に、300MBの下限と2GBの上限の範囲内でgmheap値を設定します。

0以外の値はそれをそのまま使用し、2GBよりはるかに大きく、あるいは300MBよりはるかに小さく設定することができます。

0 0
0 46

これは InterSystems FAQ サイトの記事です。

PythonからObjectScriptのルーチンを直接呼び出すことはできませんが、クラスメソッドを経由して間接的に呼び出すことができます。

しかし、Pythonの変数とObjectScriptのローカル変数は内部構造が異なるため、情報の交換には少し工夫が必要です。

簡単なサンプルでその方法について説明します。

まず、2つの変数を足し算する簡単なルーチン ^testを作ります。

1 0
0 101