#ObjectScript

0 フォロワー · 163 投稿

InterSystems ObjectScriptは、InterSystemsデータプラットフォームの任意のデータモデル(オブジェクト、リレーショナル、Key-Value、ドキュメント、グローバル)を使用してデータを操作し、InterSystemsデータプラットフォーム上のサーバーサイドアプリケーションのビジネスロジックを開発するためのスクリプト言語です。 ドキュメント

新着
記事 Mihoko Iijima · 2月 18 4m read

開発者の皆さん、こんにちは!

私は普段 Windows を使用しており、VSCode で ObjectScript を書いてテストする際には、IRIS ターミナルを別途起動し、VSCode とターミナルの 2 画面を行き来する操作を続けてきました。

ところが今回、ObjectScript エクステンションに追加された「ObjectScript Lite Terminal」を利用することで、VSCode 1 画面内で IRIS ターミナルを操作できるようになりました。

一見すると小さな追加機能ですが、日々 IRIS を触っている開発者にとっては “地味に革命” と言えるかもしれません。本記事では、その使い勝手を詳しくご紹介します。

Windows 以外の環境では、通常 iris session xxx を実行して ObjectScript シェルに切り替えますが、Lite Terminal を使えばこの操作が不要になります。

まずは、起動方法から。

Lite ターミナルの起動には、3種類の方法があります。

その1:コマンドパレットを使って起動する

VSCode の View > Command Palette.. >  ObjectScript: Launch Lite Terminal

クリック後、VSCode で現在接続しているネームスペースのターミナルが起動します。

2
1 20
お知らせ Mihoko Iijima · 2月 4

開発者の皆さん、こんにちは!

次世代の ObjectScript 開発ツールを形づくるための取り組みに、皆さまのご参加をお待ちしています。IRIS開発者向けに特別に設計された、AIを活用したObjectScript コーディングアシスタントの開発に取り組んでいます。

ObjectScript 向けに適応された汎用的な AI ではなく、ObjectScript のイディオム、IRIS API、interoperability  プロダクション、そして実際の開発者ワークフローを理解するためにゼロから構築されたソリューションです。

本当に役立つものを作るために、皆さまのご意見をぜひお聞かせください。

👉 ObjectScript Coder Agent 開発者アンケート(英語) 👈

0
0 22
記事 Toshihiko Minamoto · 1月 21 4m read

メール送信は、統合シナリオでは一般的な要件です。クライアントへのリマインダー、自動レポート、トランザクション確認などに使用されます。 固定メッセージは、管理やパーソナライズが難しくなりがちです。 そこで登場するのが templated_email モジュールです。InterSystems IRIS InteroperabilityをJinja2テンプレートの機能を組み合わせます。

メール作成でJinja2を選ぶ理由

Jinja2はPythonエコシステムで人気のあるテンプレートエンジンで、完全に動的なコンテンツ生成を可能にします。 次をサポートします:

  • 変数 — 統合メッセージや外部ソースから動的にデータを取り込みます
  • 条件(if/else)— ランタイムデータに基づいてコンテンツを変更します
  • ループ(for)— テーブル、項目リスト、反復セクションを生成します
  • フィルターとマクロ — 日付や数字のフォーマット、テンプレートブロックを再利用します

簡単なメール本文テンプレートの例:

0
0 25
記事 Hiroshi Sato · 1月 5 1m read

MacOS(Linux)とWindows両方で動作するObjectScriptプログラムを開発する際に、よくやらかしてしまうミスを共有します。

WindowsとUNIX系のファイルシステムの1つの違いは、ディレクトリのセパレータです。

UNIX系は、/(スラッシュ)

Windows系は、\(バックスラッシュ)

です。

ファイルを読み書きするプログラムでセパレータをOS別に選択するという以下のようなコードをよく書くのですが、

if ($system.Version.GetOS() = "UNIX") {
    set sep = "/"
}
else {
    set sep = "\"
}

 

ここでこのバックスラッシュをキーボードで入力すると、日本語キーボードの場合、バックスラッシュの代わりに¥(円マーク)が入力されてしまいます。

ソースコードがSJISの場合は、これでも問題ないのですが、クロスプラットフォームで開発する場合は、UTF8で通常作成するので、Macで動かすと問題ないのにWindowsで動かすとエラーになるということがちょくちょく起こります。

そして、これは意外に間違いに気づきにくいです。

ちなみにPythonでは、どちらでも/を使っておけば問題ないので、こんな問題は起こることはないと思います。

3
0 46
記事 Mihoko Iijima · 12月 25, 2025 2m read

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

InterSystems 製品の内部日付時刻($HOROLOG)を利用して時刻を取得している場合、オペレーティング・システムが提供するアルゴリズムに基づいて季節的な時刻調整を行います。

そのため、オペレーティングシステムにてサマータイムの調整が行われる場合は、InterSystems 製品は、オペレーティングシステムで対応したサマータイム時刻で動作します。

注意点としては、$HOROLOG 値が大きく変更されるケースもあるため、時刻比較やこの値をキーにしたアプリケーションの処理などがもしある場合は、その変更を考慮していただく必要があります。

ご参考:「ローカル時刻調整のしきい値

なお、$NOW() 関数を使用して内部日付時刻を取得している場合は、オペレーティングシステムのサマータイムの調整に対応していませんのでご注意ください。

$NOW() 関数は、$ZTIMEZONEの値を使用してローカル時刻を決定しています。
$ZTIMEZONEは1年を通して連続的で、サマータイム(DST)などのローカル時刻の調整に対応していないためです。

また、小数点以下を含むタイムスタンプ値をサマータイム対応済のローカル時刻で取得したい場合、$HOROLOG では対応できませんので、以下の2つ方法のどちらかを利用して取得します。

0
0 37
記事 Megumi Kakechi · 9月 15, 2025 3m read

これは InterSystems FAQ サイトの記事です。
ビジネスサービスやビジネスオペレーションで EnsLib.CloudStorage.InboundAdapter アダプタを使用したり、%Net.Cloud.Storage.Client を使用することで、Amazon s3(クラウドストレージAPI)のファイルにアクセスすることが可能です。

いずれの場合も、事前に Javaランタイムをシステムにインストールし、インストールしたJavaランタイムの JAVA_HOME 情報を、管理ポータルにて設定する必要があります(手順は後述します)。


今回は、%Net.Cloud.Storage.Client クラスを使用したサンプルをご紹介します。
手順は以下のようになります。


【手順】

以下のS3パケットにアクセスする手順になります。

   

(1)  事前に、コマンドプロンプトにて aws コマンドを使用して動作確認をしておきます(S3に存在しているファイル一覧がプロンプトに返ればOKです)。

> aws s3 ls s3://isj-s32025-04-3016:20:52         32 abc.txt
2025-04-3016:14:00      21529 messages.log

もしくは

2
0 108
記事 Megumi Kakechi · 12月 16, 2025 2m read

これは InterSystems FAQ サイトの記事です。
こちらの記事では、コマンド・パイプデバイスを使用して、外部コマンドの出力を取得する方法をご紹介します。

以下のように行います。
★コマンド出力を取得する例:

USER>kill
USER>set cmd="netstat -anp tcp"
USER>set pipe=##class(%File).%New(cmd)
 
USER>write pipe.Open("rq")
1
USER>while 'pipe.AtEnd { write !,pipe.ReadLine() }
アクティブな接続
  プロトコル  ローカル アドレス          外部アドレス        状態
  TCP    0.0.0.0:23             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
(中略)
  TCP    192.168.172.1:139      0.0.0.0:0              LISTENING
USER>


★コマンドのエラー出力を取得する例:

0
0 37
記事 Hiroshi Sato · 12月 8, 2025 2m read

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

PythonからIRISにアクセスするためのNative SDK for Pythonと呼ばれるインタフェースが用意されています。

Javaや.Net用に用意されているNative SDKと同等な機能が提供されています。

(一部異なる機能があります)。

また、Python用にはEmbedded Pythonと呼ばれるIRISと密に連携した機能があります。

IRISから最大限の性能を得るためには、Embedded Pythonが適していますが、以下のような場合、Native SDKが適しているケースもあります。

  1. 異なるサーバーでIRISとPythonプログラムが連携する必要がある。
  2. 同一サーバー上でIRISとPythonが稼働するが、システムが異なる(サブシステム間連携など)
  3. システムを別々の開発ベンダーが構築するなど、明確な境界を設けたい場合

Native SDKを利用することで以下のようなことを実装することができます。

  1. ObjectScriptやEmbedded Pythonで作成したメソッドの実行
  2. IRISオブジェクトの操作
  3. IRISグローバルデータの操作
  4. DBI-APIによるデータベースアクセス


以下からこれらのサンプルプログラムを取得することができます。

0
0 48
記事 Hiroshi Sato · 12月 8, 2025 1m read

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

.NETからIRISにアクセスするためのNative SDK for .NETと呼ばれるインタフェースが用意されています。

JavaやPython用に用意されているNative SDKと同等な機能が提供されています。

(一部異なる機能があります)。

Native SDKを利用することで以下のようなことを実装することができます。

  1. ObjectScriptやEmbedded Pythonで作成したメソッドの実行
  2. IRISオブジェクトの操作
  3. IRISグローバルデータの操作
  4. ADO.NETによるデータベースアクセス

以下からこれらのサンプルプログラムを取得することができます。

Native SDK for .NETサンプル1

Native SDK for .NETサンプル2

.NETに様々な手段でアクセスするサンプル


詳細は、以下のドキュメントをご参照ください。

InterSystems Native SDK for .NET

0
0 52
記事 iinoe ueo · 11月 24, 2025 19m read

はじめに

コミュニティの皆さま、初投稿になりますが、何か少しでも興味深い知見を共有できると幸いです。

今回の内容は、筆者が%Persistentを中心に据えたデータ構造管理の検討の過程で必要性を感じ行った、「列挙体」Likeな「データ型クラス」(%DataTypeのサブクラス)構築に関するレポートです。

内容面では、筆者が「データ型クラス」の特性に不勉強だったことに由来しての躓きに関するものも多くなりますが、ご容赦願います。 また、内容の中には、筆者が思い当たらなかった手段の活用により、よりシンプルに回避できた部分もある可能性が大いにございます。 そういった内容にお気づきの場合、ご指摘いただけますと大変ありがたいです。

経緯

組み込みのデータ型クラスを利用した、プロパティ値への制約の表現の日常化

筆者が関与したDB層にIRISを採用するプロジェクトの多くでは、永続化されるデータの構造の定義に(ごく順当に)%Persistentが用いられていました。 また、この定義クラスの永続化対象のプロパティには、データ構造の仕様書の記載に対応させて以下のような型をあてがうケースが数多く見られました。

0
0 102
記事 Kyouhei.Kawanishi · 11月 21, 2025 12m read

開発者の皆さん、はじめまして!

普段はサーバーレス環境での開発をしていて、AWS Lambda を使ったアプリケーション構築を主に行っています。IRIS についての実装経験はまだ浅いのですが、その高速で柔軟なデータベース機能の素晴らしさはよく知っています。

「このパワフルな IRIS を、使い慣れたサーバーレスアプリから呼び出せたらいいのにな...」

そんな思いから、今回 AWS Lambda と IRIS Native API を組み合わせた実装に挑戦してみました。これを通して、IRIS のことをもっと好きになれたらいいなと思っています。まだ IRIS の実装経験が浅いため、もっと良いアプローチや最適な方法があるかもしれません。もし改善点や間違いがあれば、ぜひコメントで教えていただけると嬉しいです!

この記事では、AWS Lambda から IRIS Native API を使用してデータを取得する方法を実装例とともに解説します。この基本実装をベースに、S3 トリガーや他の AWS サービスとの連携も可能です。ぜひ最後までお付き合いいただけると嬉しいです!

前提条件

  • Node.js / TypeScript の基本的な知識
  • AWS Lambda の基礎知識。

AWS環境の構成イメージ

今回扱う実装は、以下のような AWS 環境での利用を想定しています。 image

0
0 95
記事 Toshihiko Minamoto · 11月 18, 2025 7m read

モジュールは重要なテーマです! ObjectScriptにはこの概念はありませんが、Pythonでは基本的な考え方です。 一緒に見ていきましょう。

モジュールとは?

モジュールは、クラスとパッケージの間にある中間層だと私は考えています。 例を見てみましょう。

悪い例:

# MyClass.py
class MyClass:
    def my_method(self):
        print("Hello from MyClass!")

別のスクリプトでこのクラスを使用する場合、次のようになります。

# class_usage.py
from MyClass import MyClass # weird, right?

my_instance = MyClass()
my_instance.my_method()

なぜこれは悪い例なのでしょうか?

まず最初に、PEP 8によると、ファイル名は snake_case(スネークケース)にする必要があり、my_class.py にするべきです。 次に、クラスと同じ名前のファイルからクラスをインポートしています。 Phthonではこれは良いプラクティスではありません。

特に、ObjectScriptのようにクラスと同じ名前のファイルにクラスを定義する環境から来ると、これは分かりにくいかもしれません。

高度な概念

0
0 58
記事 Toshihiko Minamoto · 11月 14, 2025 3m read

この記事では、PythonスタイルガイドであるPEP 8について簡単に紹介します。

PEP 8とは?

簡単に言うと、PEP 8は、Pythonコードの書き方に関するガイドラインとベストプラクティスを提供します。

  • 変数名は snake_case(スネークケース)にする必要があります
  • クラス名は CamelCase(キャメルケース)にする必要があります
  • 関数名は snake_case(スネークケース)にする必要があります
  • 定数は UPPER_CASE(大文字)にする必要があります
  • インデントは4つのスペースにする必要があります(タブではありません)
  • private変数/関数はアンダースコア(_)で始める必要があります
    • Pythonにはprivate変数と関数が存在しないため、これはあくまでも慣習です
  • スクリプトはインポートの際に実行されるべきではありません
    • スクリプトをインポートするとそのコードは即座に実行されます。最初の記事をご覧ください
  • ...

全部を覚える必要はありませんが、頭の片隅に入れておくと他人のコードを理解するのに役立ち、自分のコードも他の人にとって分かりやすくなります ^^。

また、pythonic という言葉を聞いたことがあるかもしれません。 PEP 8に従うことは、「pythonic」なコードを書く方法の一つです(それだけではありませんが、重要な要素です)。

0
0 45
記事 Toshihiko Minamoto · 10月 30, 2025 7m read

この記事では、IRIS環境におけるPythonプログラミングの基礎について紹介します。

本題に入る前に、重要なトピックである「Pythonの仕組み」について説明します。これは、IRIS環境でPythonを使用して作業する際に起こりうる問題や制限を理解するのに役立ちます。

すべての記事と例は、以下のgitリポジトリで確認できます: iris-python-article

Pythonの仕組み

インタープリター型言語

Pythonはインタープリター型言語であり、コードはランタイム時に1行ずつ実行されます。スクリプトをインポートする場合でも同様です。

これはどういうことでしょうか? 以下のコードを見てみましょう。

# introduction.py

def my_function():
    print("Hello, World!")

my_function()

このスクリプトを実行すると、Pythonインタープリターはコードを1行ずつ読み取ります。 まず最初に関数 my_function を定義してから、その関数を呼び出すと、コンソールに「Hello, World!」と出力されます。

スクリプトを直接実行している例:

python3 /irisdev/app/src/python/article/introduction.py 

出力は以下のようになります。

Hello, World!
0
0 62
記事 Toshihiko Minamoto · 10月 28, 2025 3m read

この記事では、マジックメソッドとしても知られるPythonダンダーメソッドについて簡単に解説します。

ダンダーメソッドとは?

ダンダーメソッドは、始めと終わりに2つのアンダースコア(__)が付いているPythonの特殊メソッドです。 このメソッドを使用することで、加算や減算、文字列表現など、組み込みの操作に対するオブジェクトの動作を定義することができます。

よくあるダンダーメソッドには、次が含まれます。

0
0 74
記事 Kosaku Ikeda · 10月 26, 2025 14m read

コミュニティの皆さんこんにちは。
 

ベクトル検索関連の処理が完全にノーマークだった私が、一先ず「やってみよう!」との事で、2つの動画のサンプルを実行してみました。
Pythonは初心者なので、アレな箇所があっても目をつぶっていただけると幸いです。

また、間違っている箇所があったら、ご指摘いただけると幸いです。


■参考にした動画

■参考にしたコミュニティ記事

【目的】

本記事では、動画で紹介された内容を実際にIRIS環境上で実行できるよう、具体的な環境構築とコーディングを記載致します。
コミュニティの皆さんが簡単に試せるようになれば幸いです。

またGithubにサンプルソースを配置しているので、必要な方は参考にして下さい。

【準備】

■作業環境

※環境作成方法に問題のない方は、読み飛ばしていただいて構いません。

項目 バージョン情報・他
OS WIndowsServer2019
IRIS IRIS Community 2025.2.0.227.0
Python 3.12.10
開発環境 VS Code 1.105.1
0
0 149
記事 Hiroshi Sato · 10月 21, 2025 1m read

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

ルーチンやメソッドを実行した際に以下のような<FRAMESTACK>エラーが発生する場合、DOコマンドの発行の入れ子数が多すぎて、それ以上スタック情報を保持できなくなったことを示しています。

<FRAMESTACK> error is reported when the routine has too many nested calls to DO command. You can check the current stack with $STACK value.

可能性として高いのはプログラミング上のミスで再起的なメソッド/ルーチン呼び出しがループしている場合などです。

以下のようなプログラミングを行い、$STACK変数の値を確認することで、スタックのレベルがどのように変化しているのかを確認できます。

0
0 39
記事 Hiroshi Sato · 10月 21, 2025 1m read

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

SQLアクセス( ADO含む)を行う場合は、SQLトランザクションを使用して、トランザクションを制御します。

一方オブジェクトアクセス(ObjectScript)ではtstart / tcommit / trollbackコマンド 
(Native SDK for .NETでは IRIS の TStart(), TCommit(), TRollback() メソッド)
によってトランザクションを制御します。

この2種類のトランザクションモードを混在させて使用することはサポートされていません。

詳細は、以下のドキュメントをご参照ください。

トランザクション管理

また関連するメソッドの以下ドキュメントの注意事項にも

「このメソッドは Native SDK トランザクション・モデルを使用し、ADO.NET/SQL トランザクション・メソッドとは互換性がありません。

この 2 つのトランザクション・モデルを混在させないでください。」

と記載をしております。

Native SDK for .NET のクイック・リファレンス

0
0 26
記事 Toshihiko Minamoto · 9月 25, 2025 8m read

REST レスポンスから IRIS データーベースに情報を保存する新しいプロジェクトがあります。 少なくとも 20 以上の個別の REST エンドポイントの情報を同期する必要があるため、それらのエンドポイントの結果を保存するために、ほぼ同じ数の ObjectScript クラスを作成しなければなりません。

ChatGPT を使って、それらのクラスを作成することはできますか? 答えは「できます」です。生成 AI を使って便利なものを作るのは初めてなので、素晴らしい機会だと思います。 スープを飲むキリンの写真を生成するのには飽きてきました…。

以下のようにして実現しました。

  • エンドポイントをクエリするために、「curl」を使ってサンプルの JSON REST の呼び出し出力を取得する。
  • ChatGPT にアクセスする(InterSystems は社員に会社全体で使用できるライセンスを提供しています)。
  • ChatGPT と以下のように会話する。

以下のリクエストを「Message ChatGPT」プロンプトに入力しました。

私: 次の JSON のデータを格納する ObjectScript クラスを生成してください。

JSON を入力する前に Return キーを押すと、ChatGPT から次のように指示されました。

0
0 59
InterSystems公式 Seisuke Nakahashi · 7月 23, 2025

インターシステムズは、VS Code - ObjectScript 拡張機能のバージョン 3.0.5 をリリースしました。 本リリースには、多くのバグ修正 および 利用状況データ収集の変更が含まれています。より多くの製品使用データを収集することで、ユーザのみなさまにとって最も良い影響につながる修正と機能強化を特定し、優先順位をつけて実装することが可能となります。 個人を特定できる情報 (PII) が収集されることはありません。また、VS Code の telemetry.telemetryLevel 設定で利用状況データ収集を無効にすることも可能です。 収集されるデータの一覧は こちら をご覧ください。 ObjectScript 拡張機能をご利用いただきありがとうございます。フィードバックがございましたら、お気軽に 問題をご報告 ください。

0
0 54
記事 Mihoko Iijima · 7月 3, 2025 4m read

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

InterSystems 製品では、ファイルオープン時に文字コードを指定すれば指定の文字コードで正しくファイルの中身を処理できます。

文字コードを指定しない場合、InterSystems 製品をインストールした OS に合わせて設定されたファイル I/O 用文字コードを利用してファイルをオープンします(Linux 系は UTF8、Windows は SJIS)。

また、文字列については文字コードが判明していれば $ZCONVERT() 関数を使用して指定文字コードで文字列を処理することができます。

 例)$ZCONVERT(文字列,"I","IRIS内文字コード")

文字コードが不明な場合、残念ながら InterSystems 製品だけでそのコードを判別することができないため、例えば Embedded Python で Python の chardet パッケージを使用して文字コード判別し、IRIS 内文字コードを取得しファイルオープン、文字列の文字コード変換をすることができます。

chardetパッケージについては、外部サイトですが参考となります。ぜひご参照ください。

参考ページ:[解決!Python]テキストファイルのエンコーディングを調べて、その内容を読み込むには(chardetパッケージ)

0
1 169
記事 Mihoko Iijima · 6月 30, 2025 2m read

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

ObjectScript で日付の比較を行う場合、一旦 $HOROLOG 形式(内部数値)に変換することで算出しやすくなりますが、SQL 関数を利用して算出することもできます。

ObjectScript から SQL 関数を実行するには、%SYSTEM.SQL.Functions クラスを使用します。

※ 2021.1以前のバージョンでは、%SYSTEM.SQL クラスを使用します。

%SYSTEM パッケージは、システム・オブジェクトと呼ばれ ObjectScript では $SYSTEM 特殊変数を利用して以下の構文で実行します。

  $SYSTEM.サブパッケージ名.クラス名.メソッド名() または $SYSTEM.クラス名.メソッド名()

以下、SQL 関数 DATEDIFF を使用して日付の比較を行う例です。

USER>write$system.SQL.Functions.DATEDIFF("dd","2025-01-20","2025-03-20")
59

 

分での比較

USER>write$system.SQL.Functions.DATEDIFF("mi","2025-01-20","2025-03-20")
84960

 

秒での比較

0
0 47
記事 Tomoko Furuzono · 3月 29, 2022 2m read

これは、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

上記を実行することにより結果セットとして各行およびフィールドにアクセスできます。
実行例:

3
1 665
記事 Tomoko Furuzono · 4月 17, 2025 1m read

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


メソッドの実装に使用する言語を明示する場合は、下記のようにメソッドキーワードで「Language=~~~」と指定します。

Method name(formal_spec) As returnclass [ Language = language ]
{    //implementation }

 指定できるLanguageの値は下記のとおりです。

  • objectscript (既定) — ObjectScript
  • python — 組み込み Python
  • tsql — Transact-SQL
  • ispl — Informix ストアド・プロシージャ言語

ドキュメント:Language (メソッド・キーワード)

上記の通り、ObjectScriptで記載する場合は、「Language=objectscript」と指定します。
但し、CSP内の<SCRIPT>タグ内で指定する場合は、下記の通り、「LANGUAGE=’cache’」と指定することにご注意ください。

<SCRIPT LANGUAGE='cache', ~~~>

ドキュメント:<SCRIPT>  

※CSPページは、IRISでは非推奨の機能です。

0
0 71
記事 Tomoko Furuzono · 4月 10, 2025 1m read

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

サーバのIPアドレスやマシン名は、%SYSTEM.INetInfoクラスのメソッドで取得することが出来ます。

set hostname=$System.INetInfo.LocalHostName() //マシン(ホスト)名set ip=$system.INetInfo.HostNameToAddr($system.INetInfo.LocalHostName())  //IPアドレス 
0
0 61
記事 Seisuke Nakahashi · 5月 31, 2022 6m read

2022年5月30日より、外部アプリからGmailを送信するには OAuth 2.0が必須になりました (リンク) そのため、IRIS から Gmail を送信したい 場合は、今後は OAuth 2.0 を利用して Gmailアカウントに接続する 必要があります。 そこで、IRIS コード ObjectScript を使って、OAuth 2.0 でGmailアカウントに接続&メール送信するサンプルを作成しました。 ぜひご活用ください!

2
0 1541
記事 Tomoko Furuzono · 4月 7, 2025 1m read

これは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の詳細については、下記各ドキュメントページをご確認ください。

0
0 92