Caché 専用のシステム/ツールおよびユーティリティ - InterSystems ...

intersystems.com
  • Keine Tags gefunden...

Caché 専用のシステム/ツールおよびユーティリティ - InterSystems ...

Caché 専 用 のシステム/ツールおよびユーティリティCaché Version 2013.1 2013 年 07 月 02 日Copyright © 2012 InterSystems CorporationAll rights reserved.このドキュメントは、 Sun Microsystems、RenderX Inc.、 アドビ システムズ および ワールドワイド・ウェブ・コンソーシアム(www.w3c.org)のツールと情 報 を 使 用 して、 Adobe Portable Document Format (PDF)で 作 成 およびフォーマットされました。 主 要 ドキュメント 開 発 ツールは、InterSystemsが 構築 したCacheéと Javaを 使 用 した 特 別 目 的 のXML 処 理 アプリケーションです。, ,Caché WEBLINK, Distributed Cache Protocol, M/SQL, M/NET および M/PACT は InterSystems Corporation の 登 録 商 標 です。, , and ,InterSystems TrakCare, InterSystems Jalapeño Technology, Enterprise Cache Protocol, ECP および InterSystems Zen は InterSystems Corporation の登 録 商 標 です。ここで 使 われている 他 の 全 てのブランドまたは 製 品 名 は、 各 社 および 各 組 織 の 商 標 または 登 録 商 標 です。このドキュメントは、インターシステムズ 社 ( 住 所 :One Memorial Drive, Cambridge, MA 02142)あるいはその 子 会 社 が 所 有 する 企 業 秘 密 および 秘 密情 報 を 含 んでおり、インターシステムズ 社 の 製 品 を 稼 動 および 維 持 するためにのみ 提 供 される。この 発 行 物 のいかなる 部 分 も 他 の 目 的 のために 使用 してはならない。また、インターシステムズ 社 の 書 面 による 事 前 の 同 意 がない 限 り、 本 発 行 物 を、いかなる 形 式 、いかなる 手 段 で、その 全 てまたは一 部 を、 再 発 行 、 複 製 、 開 示 、 送 付 、 検 索 可 能 なシステムへの 保 存 、あるいは 人 またはコンピュータ 言 語 への 翻 訳 はしてはならない。かかるプログラムと 関 連 ドキュメントについて 書 かれているインターシステムズ 社 の 標 準 ライセンス 契 約 に 記 載 されている 範 囲 を 除 き、ここに 記 載 された 本 ドキュメントとソフトウェアプログラムの 複 製 、 使 用 、 廃 棄 は 禁 じられている。インターシステムズ 社 は、ソフトウェアライセンス 契 約 に 記 載 されている 事 項 以 外 にかかるソフトウェアプログラムに 関 する 説 明 と 保 証 をするものではない。さらに、かかるソフトウェアに 関 する、あるいはかかるソフトウェアの 使 用 から 起 こるいかなる 損 失 、 損 害 に 対 するインターシステムズ 社 の 責 任 は、ソフトウェアライセンス 契 約 にある 事 項 に 制 限 される。前 述 は、そのコンピュータソフトウェアの 使 用 およびそれによって 起 こるインターシステムズ 社 の 責 任 の 範 囲 、 制 限 に 関 する 一 般 的 な 概 略 である。 完全 な 参 照 情 報 は、インターシステムズ 社 の 標 準 ライセンス 契 約 に 記 され、そのコピーは 要 望 によって 入 手 することができる。インターシステムズ 社 は、 本 ドキュメントにある 誤 りに 対 する 責 任 を 放 棄 する。また、インターシステムズ 社 は、 独 自 の 裁 量 にて 事 前 通 知 なしに、 本 ドキュメントに 記 載 された 製 品 および 実 行 に 対 する 代 替 と 変 更 を 行 う 権 利 を 有 する。インターシステムズ 社 の 製 品 に 関 するサポートやご 質 問 は、 以 下 にお 問 い 合 わせください:Tel:Fax:Email:InterSystems Worldwide Customer Support+1 617 621-0700+1 617 374-9391support@InterSystems.com


テーブル 一 覧テーブル 5–1: コマンド 行 のプロパティ ............................................................................... 75テーブル 5–2: カスタム・インストール 可 能 な 機 能 ................................................................. 79テーブル 5–3: Caché インストール・パラメータ・ファイルの 変 数 .............................................. 83Caché 専 用 のシステム/ツールおよびユーティリティv


このドキュメントについてブラウザ・ベースの 管 理 ポータル・アプリケーションは、Caché システムを 管 理 するための 標 準 ツールですが、 他 のツールも 利 用 できます。このドキュメントは、Caché システムの 管 理 、カスタマイズ、および 機 能 拡 張 に 使 用 できるいくつかの専 用 のツールとユーティリティのガイドです。このドキュメントでは、 以 下 の 項 目 について 説 明 します。• はじめに — このドキュメントで 記 載 されているツールの 概 要 について 詳 細 に 説 明 します。• Caché システムのカスタマイズ — 標 準 の Caché インストールをカスタマイズして 拡 張 するさまざまな 方 法 を 説 明 します。• Caché のリモート 管 理 — 文 字 ベースのターミナルや 外 部 プログラムから Caché を 管 理 するためのルーチンとユーティリティについて 説 明 します。• 移 行 と 変 換 ユーティリティ — Caché データベースを 新 しいシステムに 移 行 する 際 に 使 用 できる 専 用 のツールと 手 法について 説 明 します。• Caché のインストールと 配 布 — Caché システムのインストールと 配 布 のカスタマイズに 使 用 できるクラスとユーティリティについて 説 明 します。詳 細 は、" 目 次 " を 参 照 してください。関 連 トピックに 関 する 詳 細 は、 以 下 のドキュメントを 参 照 してください。• Caché システム 管 理 ガイド — Caché システムを 管 理 するための 標 準 のツールと 手 順 について 説 明 します。• Caché ターミナルの 使 用 法 — Caché のコマンド 行 インタフェースの 使 用 方 法 について 説 明 します。• Caché インストール・ガイド — ご 使 用 のシステムに Caché をインストールする 標 準 手 順 について 説 明 します。• Caché 監 視 ガイド — Caché を 監 視 するために 利 用 できるツール、ルーチン、およびサードパーティのインタフェースについて 説 明 します。• Caché セキュリティ 管 理 ガイド — 認 証 、 承 認 、 監 査 、データベース 暗 号 化 、SSL/TLS など、Caché セキュリティにおけるさまざまな 機 能 について 説 明 します。• Caché 分 散 データ 管 理 ガイド — ECP (Enterprise Caché Protocol) を 使 用 した 分 散 システムの 構 成 、 管 理 、および開 発 方 法 について 説 明 します。一 般 的 な 情 報 については、"InterSystems のドキュメントの 使 用 法 " を 参 照 してください。Caché 専 用 のシステム/ツールおよびユーティリティ 1


1はじめにこのドキュメントの 目 的 は、Caché システムのツールとユーティリティに 関 する 情 報 を 記 載 することです。ここで 取 り 上 げるツールとユーティリティは、 専 門 的 すぎて、 一 般 的 な 読 者 には 馴 染 みの 薄 いものです。 以 下 に 示 す 理 由 の 1 つ 以 上 により、 他 のドキュメントには 記 載 されていません。• ごく 少 数 のユーザのみが 使 用 している。• 必 須 ではなく、 使 用 されるのは 通 常 一 度 だけ。• 高 度 なカスタマイズや 拡 張 機 能 が 可 能 で、Caché システムについて 専 門 的 な 知 識 が 必 要 である。• レガシー・アプリケーションであるが、 現 在 のシステム 上 で 有 用 な 場 合 がある。以 降 のセクションでは、このドキュメントで 記 載 されているツールの 概 要 について 詳 細 に 説 明 します。1.1 カスタマイズ“Caché システムのカスタマイズ” の 章 では、 標 準 の Caché インストールをカスタマイズして 拡 張 するさまざまな 方 法 を説 明 します。 以 下 のツールについて 説 明 します。• 各 国 言 語 サポートのシステム・クラス — 各 国 言 語 サポート (NLS) と 呼 ばれるローカライズのサポートについて 説 明 します。これによってアプリケーションは、エンジニアリングの 変 更 なしにさまざまな 言 語 や 地 域 に 適 応 できます。• Caché ^%ZSTART および ^%ZSTOP ルーチンの 使 用 法 — カスタマイズされたシステム・ルーチンを 作 成 する 方 法 について 説 明 します。そのルーチンは、システム・イベント 検 出 時 に 自 動 的 に 呼 び 出 されます。ルーチンを 呼 び 出 せるのは、Caché が 起 動 または 停 止 したとき、ユーザがログインまたはログアウトを 実 行 したとき、JOB が 開 始 または 終了 したとき、あるいは 外 部 プログラムが CALLIN を 開 始 または 完 了 したときです。• %ZLang による Caché ObjectScript の 拡 張 — %ZLANG 言 語 拡 張 ライブラリを 使 用 して、Caché ObjectScript にカスタム 機 能 を 追 加 する 方 法 について 説 明 します。Caché のインストールに 適 したユーザ 定 義 のコマンド、 関 数 、およびシステム 共 通 の 特 殊 変 数 を 宣 言 することができます。これらのカスタム 拡 張 機 能 は、Caché ObjectScript の 標 準 機能 とまったく 同 じように 動 作 します。1.2 システムのリモート 管 理“Caché のリモート 管 理 ” の 章 では、ターミナルや 外 部 プログラムから Caché を 管 理 するためのルーチンとユーティリティについて 説 明 します。 以 下 のツールについて 説 明 します。Caché 専 用 のシステム/ツールおよびユーティリティ 3


はじめに• グローバルの 高 速 コピーのための ^GBLOCKCOPY の 使 用 法 — データベース 間 でグローバルのコピーを 高 速 に行 うルーチンについて 説 明 します。このルーチンは、アップグレード 中 にデータベースの 変 換 に 使 用 できます。これはターミナルと 対 話 形 式 で 実 行 するか、バックグラウンドのジョブとして 1 つ 以 上 のグローバルをコピーするバッチに構 成 されます。 組 み 込 みのモニタと、 複 数 のグローバル・コピーの 進 行 を 記 録 するための 複 数 のリポートが 含 まれます。システム 障 害 が 発 生 した 場 合 、 中 断 した 箇 所 で 再 開 できます。• スイッチの 使 用 法 — さまざまな 目 的 に 使 用 できる、インスタンス 単 位 のフラグである Caché スイッチについて 説 明 します。 特 に、バックアップの 実 行 中 やクラッシュしたシステムの 回 復 中 に、 各 種 システム・プロセスを 抑 制 する 際 に 便利 です。• Windows クライアントからの Caché の 制 御 — 外 部 プログラムが Windows クライアントとして 機 能 できるようにするDLL について 説 明 します。Windows クライアントでは、Caché 構 成 を 制 御 し、Caché プロセスを 適 切 な 設 定 で 開 始し、 指 定 された 構 成 名 の Caché サービス 名 とディレクトリ・パスを 検 索 し、Caché システムの 状 態 を 取 得 できます。• 文 字 ベースの 管 理 ルーチン — 便 利 なターミナル・ルーチンを 2 つ 説 明 します。^SHADOW では、 別 の Caché インスタンスのシャドウ・システムの 定 義 と 管 理 ができます。^LEGACYNETWORK では、COM ポートのリスト、 追 加 、 編集 、および 削 除 ができます。1.3 移 行 と 変 換“ 移 行 と 変 換 ユーティリティ” の 章 では、Caché データベースを 新 しいシステムに 移 行 する 際 に 使 用 できる 専 用 のツールと 手 法 について 説 明 します。 以 下 のツールについて 説 明 します。• cvendian を 使 用 したビッグ・エンディアン・システムとリトル・エンディアン・システム 間 の 変 換 — ビッグ・エンディアン・プラットフォームとリトル・エンディアン・プラットフォームの 間 で 移 行 するために Caché データベースのバイト・オーダーを 変 換 するユーティリティについて 説 明 します。また、 指 定 されたデータベースのバイト・オーダーに 関 して 報 告するためのオプションも 提 供 しています。• FileMan ファイルから Caché クラスへの 変 換 — FileMan (MUMPS アプリケーション 用 のメタデータ・ユーティリティ)で 作 成 されたファイルを 読 み 取 り、それらをマップする Caché クラスを 生 成 するウィザードについて 説 明 します。• CSP に 変 換 される WebLink Developer タグ — WebLink Developer タグのセットについて 説 明 します。このセットは、Weblink Developer から Caché Server Pages (CSP) にアプリケーションを 移 行 する 際 に 便 利 です。1.4 インストールと 配 布“Caché のインストールと 配 布 ” の 章 では、Caché システムのインストールと 配 布 のカスタマイズに 使 用 できるクラスとユーティリティについて 説 明 します。 以 下 の 項 目 について 説 明 します。• Caché %Installer クラスの 使 用 法 — Caché %Installer クラスについて 説 明 します。このクラスにより、インストール・マニフェストを 定 義 できます。このクラスにより、Caché のインスタンスを 構 成 するコードを 生 成 するインストール・マニフェストを 定 義 できます。%Installer マニフェストは、 端 末 セッションから、コード 内 で、またはインストール 中 に 自 動 的に 呼 び 出 せます。• Windows プラットフォームでの 自 動 カスタム・インストール — Caché インスタンスのカスタム・インストール、アップグレード、 再 インストール ( 修 復 )、および 削 除 (アンインストール) を 自 動 で 実 行 する 際 に 使 用 できるユーティリティについて 説 明 します。このユーティリティでは、Windows® インストーラのコマンド 行 アプリケーション (msiexec) に 渡 されたプロパティで 提 供 された 入 力 を 使 用 します。• Caché ディストリビューションへの UNIX® インストール・パッケージの 追 加 — 既 存 の Caché ディストリビューションにUNIX® インストール・パッケージを 追 加 する 方 法 について 説 明 します。4 Caché 専 用 のシステム/ツールおよびユーティリティ


2Caché システムのカスタマイズこの 章 では、 標 準 の Caché インストールをカスタマイズして 拡 張 するさまざまな 方 法 を 説 明 します。• 各 国 言 語 サポートのシステム・クラスの 使 用 法• ^%ZSTART ルーチンと ^%ZSTOP ルーチンによる 開 始 動 作 と 停 止 動 作 のカスタマイズ• ^%ZLANG ルーチンによる 言 語 の 拡 張2.1 各 国 言 語 サポートのシステム・クラスの 使 用 法最 新 のアプリケーションは、 一 般 に、 余 分 なエンジニアリングなしにさまざまな 言 語 や 地 域 に 適 応 するよう 設 計 されています。このプロセスはインターナショナライゼーションと 呼 ばれます。この 目 的 のために、 特 定 のコンポーネントを 追 加 して、 特 定 の 地 域 や 言 語 に 対 してアプリケーションを 適 応 させるプロセスをローカライズといいます。ユーザの 言 語 、 国 、およびその 他 の 特 殊 な 可 変 情 報 を 定 義 する 一 連 のパラメータは、ロケールです。ロケールは、 入 力 、出 力 、およびデータ 処 理 に 関 する 規 約 を 指 定 します。これには 以 下 が 含 まれます。• 数 の 形 式• 日 付 と 時 刻 の 形 式• 通 貨 記 号• 文 字 のソート 順• その 他 の 文 字 セットへの 文 字 列 の 自 動 変 換ロケールを 指 定 する 場 合 は、 一 般 に、 使 用 言 語 と 地 域 (あるいは 他 のバリエーション) を 記 述 します。これらには、 通 常 、ISO (International Standards Organization) の 言 語 と 地 域 の 略 称 を 指 定 します。 例 えば、en-us は 米 国 で 使 用 される 英語 を 示 し、en-gb は 英 国 で 使 用 される 英 語 を 示 します。2.1.1 %SYS.NLS のクラスCaché では、%SYS.NLS (NLS は 各 国 言 語 サポートのことです) パッケージのクラスによるローカライズをサポートしています。これらのクラスには、Caché が 必 要 とする、インターナショナライズされたプログラムをその 実 行 環 境 に 適 応 させるための 情 報 が 含 まれます。このセクションでは、オプションを 簡 単 に 説 明 します。 詳 細 は、 各 クラスのクラス・ドキュメントを参 照 してください。Caché 専 用 のシステム/ツールおよびユーティリティ 5


Caché システムのカスタマイズ注 釈これらのクラスを 使 用 すると、システムまたはプロセスに 現 在 設 定 されている 値 を 取 得 できます。プロセスに 関 連付 けられている 値 を 変 更 すると、その 変 更 は 直 ちに 反 映 されます。システム 設 定 を 変 更 するには、アプリケーションで 適 切 な 値 を 指 定 して 新 しいロケールを 定 義 し、そのロケールを 使 用 して 起 動 するよう Caché に 指 示 する 必 要 があります。2.1.1.1 %SYS.NLS.Locale%SYS.NLS.Locale のプロパティには、 参 照 が 必 要 になる 場 合 がある 現 在 のロケールに 関 する 情 報 があります。これらの値 を 変 更 しても、システムの 動 作 には 影 響 しません。2.1.1.2 %SYS.NLS.Device%SYS.NLS.Device クラスには、 現 在 のデバイスのプロパティの 一 部 が 格 納 されます。ただし、 対 象 となるデバイスが、オブジェクトをインスタンス 化 した 際 に 使 用 していたデバイスであるとは 限 りません。一 般 に、デバイスのプロパティは、そのデバイスが 開 いたときに 設 定 されます。これにより 正 しい 変 換 の 使 用 が 保 証 されます。 変 換 テーブルは、デバイスが 開 いた 後 に 変 更 することもできます。それには、このクラスのプロセス・インスタンスのXLTTable プロパティを 変 更 しますが、 明 確 な 理 由 がない 限 り、このプロパティを 変 更 することはお 勧 めできません。%SYS.NLS.Device にある 他 のプロパティにより、 変 換 中 に 発 生 したエラーを 処 理 できます。 既 定 では、 現 在 のテーブルで 文 字 を 処 理 できない 場 合 、エラーはトリガされず、 問 題 の 発 生 した 文 字 が 疑 問 符 (?) に 変 換 されます。 置 換 値 または置 換 文 字 列 と 呼 ばれるこの 文 字 は、 他 の 任 意 の 文 字 列 に 変 換 できます。さらに、 未 定 義 の 文 字 を 暗 黙 的 に 変 換 する 代わりに、エラーを 発 行 させることもできます。この 動 作 は 既 定 のアクション と 呼 ばれ、 以 下 から 選 択 できます。• 0 — エラー 生 成• 1 — 変 換 不 能 な 文 字 を 置 換 値 に 置 換• 2 — エラーを 無 視 して 変 換 不 能 な 文 字 を 渡 すこのクラスのプロパティの 入 力 および 出 力 処 理 には、それぞれ 次 のような 個 別 のプロパティがあります。• InpDefaultAction• InpReplacementValue• OutDefaultAction• OutReplacementValue2.1.1.3 %SYS.NLS.Format%SYS.NLS.Format クラスには、$ZDATE() や 関 連 する 関 数 の 動 作 に 影 響 を 与 えるプロパティがあります。これらのプロパティの 値 は、 現 在 のロケールに 定 義 されている 値 から 継 承 されますが、 他 のユーザに 影 響 を 与 えずにプロセス・レベルで 変 更 することも 可 能 です。 例 えば、DateSeparator および TimeSeparator プロパティにはそれぞれ、 日 付 項 目 と 時 間項 目 を 区 切 る 文 字 が 保 持 されます。これらの 値 を 変 更 した 場 合 の 影 響 については、$ZDATE、$ZDATEH、および $FNUMBER のドキュメントの 説 明 を 参 照してください。Locale プロパティ%SYS.NLS.Format クラスの Locale プロパティでは、 現 在 のプロセスでの 値 の “ 外 観 ” を 制 御 できます。 以 下 はその 例です。• Locale が 空 の 文 字 列 の 場 合 は、システムの 既 定 の 形 式 ( 通 常 はアメリカ 英 語 ) が 適 用 されます。• Locale がロケール 名 (rusw や csy8 など) の 場 合 は、 指 定 したロケールの 形 式 を 使 用 します。• Locale が Current の 場 合 は、システムの 形 式 を 使 用 します。6 Caché 専 用 のシステム/ツールおよびユーティリティ


各 国 言 語 サポートのシステム・クラスの 使 用 法このプロパティは、オブジェクトをインスタンス 化 した 後 、または 以 下 のように 目 的 のロケールを %New() メソッドに 渡 すことにより 変 更 できます。Set fmt = ##class(%SYS.NLS.Format).%New("jpnw")これらの 変 更 は、 現 在 のプロセスにのみ 影 響 します。2.1.1.4 %SYS.NLS.Table%SYS.NLS.Table クラスは、システムの 既 定 を 示 すオブジェクトや、テーブルのさまざまなカテゴリに 対 するプロセスの 現在 の 設 定 を 示 すオブジェクトをインスタンス 化 します。NLS の 基 本 的 なメカニズムであるテーブルでは、アプリケーション・データを 入 力 として 受 け 入 れ、 順 序 付 けして、 指 定 のロケールに 適 した 形 式 で 表 示 することができます。%SYS.NLS.Localeでは、システム・オブジェクトのプロパティを 変 更 してもシステムに 影 響 を 与 えません。ただし、プロセス・オブジェクトからプロパティを 変 更 すると、 関 連 付 けられている 動 作 が 直 ちに 変 更 されます。NLS のテーブルは、 入 出 力 テーブルと 内 部 テーブルに 分 類 できます。 各 テーブル・タイプには、 以 下 に 示 すような、 独自 の 関 連 データがあります。入 出 力 テーブルこれらのテーブルは、システムが 稼 動 する 現 在 のロケールでサポートされている 基 本 文 字 セットと、Caché 以 外 のエンティティでサポートされている 他 言 語 文 字 セットを 変 換 します。 例 えば、ロケールの 文 字 セットが Latin2 (より 正 確 には ISO8859-2) で、 他 言 語 文 字 セットが、Caché ターミナルとの 通 信 に 一 般 に 使 用 される UTF-8 だとします。この 場 合 、 出 力には Latin2–to-UTF8 (Latin2 を UTF8 へ 変 換 する) などのテーブルが 使 用 され、 入 力 には UTF8–to-Latin2 (UTF8を Latin2 へ 変 換 する) などの 逆 マッピング・テーブルが 必 要 になります。ここでは ( 入 力 用 と 出 力 用 に) 2 つのテーブルを 使 用 していますが、 通 常 、これらのテーブルは 互 いを 補 完 します。Cachéでは、 処 理 を 簡 潔 にするため、ロケール 定 義 とシステムの 既 定 については、1 組 みの 入 出 力 テーブルに 対 して 1 つの名 前 を 使 用 します。この 名 前 には、 通 常 、 他 言 語 文 字 セットの 名 前 が 使 用 されますが、 暗 黙 の 前 提 として、もう 1 つの 名前 はロケールの 文 字 セットを 使 用 した 名 前 になります。ただし、カスタム・テーブルを 作 成 する 場 合 は、 変 換 が 行 われることを 示 す 任 意 の 名 前 を 選 択 することができます。入 出 力 テーブルはデバイスで 使 用 されます。この 場 合 、デバイスという 単 語 は、Caché が 外 部 とやり 取 りするインタフェースを 示 します。プロセス・インタフェースとシステム 呼 び 出 しインタフェースを 含 めて、このインタフェースでは 変 換 が 必 要になります。• Caché ターミナル• その 他 のターミナル 接 続• 外 部 ファイル• 磁 気 テープ• TCP/IP 接 続• DSM-DDP および DTM-DCP システムへの 接 続• プリンタ• Caché プロセス• システム 呼 び 出 し内 部 テーブル内 部 テーブルでも、 現 在 のロケールの 文 字 セットで 構 成 される 文 字 列 を 他 の 値 にマップしますが、このテーブルは 外 部との 通 信 を 目 的 とはしていません。 内 部 テーブルは、 以 下 の 文 字 を 識 別 します。• パターン・マッチング文 字 、 数 字 、 句 読 点 など、 特 定 のパターン・コードに 一 致 する 文 字 を 識 別 します。Caché 専 用 のシステム/ツールおよびユーティリティ 7


Caché システムのカスタマイズ• 識 別 子識 別 子 テーブルは、 識 別 子 に 使 用 できる 文 字 を 指 定 します。• 大 文 字 のアルファベット、 小 文 字 のアルファベット、およびタイトルで 使 用 される 大 文 字 。これらは 構 造 的 に 入 出 力 テーブルと 似 ています。このテーブルは、ある 1 つの 文 字 セットを、 偶 然 同 じである 別 の 文字 セットにマップします。ただし、これらのテーブルは、 入 出 力 処 理 ではなく、$ZCONVERT() のコンテキストで 使 用されます。• 照 合 順 序これらのテーブルは、ある 文 字 列 を、グローバル 添 え 字 での 使 用 に 適 したその 文 字 列 の 内 部 表 現 にマップします。言 語 が 異 なれば、ディクショナリ 順 序 での 照 合 ルールは 異 なります。これらのルールは 照 合 テーブルにカプセル 化されています。• $X/$Y アクションこれらのテーブルでは、 文 字 を、 特 殊 変 数 $X および $Y とどのように 関 係 するのかを 示 す 値 にマップします。 文 字を 出 力 した 後 に $X および $Y を 増 分 するのか、 文 字 を 印 刷 可 能 にするかどうかなど、$X/$Y テーブルにはこれらの 答 えが 含 まれます。注 釈Caché のすべてのバージョンで 使 用 可 能 な 照 合 のリストは 固 定 されています。 既 存 の 照 合 がニーズに 適 合 しない 場 合 は、インターシステムズのサポート 窓 口 までお 問 い 合 わせください。2.1.2 %SYS.NLS の 使 用 例重 要これらの 例 はすべて 実 行 可 能 ですが、いずれの 例 にも [ 実 行 する] ボタンはありません。これらは 現 在 のロケールに 対 するプロセス 既 定 値 を 操 作 するからです。また、 多 くが 管 理 特 権 や %SYS ネームスペースへの 書 き 込 みアクセス 権 を 必 要 とします。これらの 例 を 実 行 する 場 合 は、インターシステムズのターミナル 機 能 (Windows) や TCP/IP 接 続 を 介 して、かつ 適 切 な 特 権 を 持 ったユーザとして、 別 のプロセスで実 行 してください。2.1.2.1 現 在 のロケール 情 報 の 表 示この 例 では、 現 在 のシステム・ロケールに 関 する 情 報 が 表 示 されます。Set Info = ##class(%SYS.NLS.Locale).%New()Set Items = "Name" _"/Description" _"/Country" _"/CountryAbbr" _"/Language" _"/LanguageAbbr" _"/Currency" _"/CharacterSet"Write !For i = 1 : 1 : $LENGTH(Items, "/"){Set Item = $PIECE(Items, "/", i)Write $JUSTIFY(Item, 15),": ", $PROPERTY(Info, Item), !}2.1.2.2 使 用 可 能 なロケールの 表 示この 例 では、 使 用 可 能 なロケールに 関 する 情 報 が 表 示 されます。8 Caché 専 用 のシステム/ツールおよびユーティリティ


各 国 言 語 サポートのシステム・クラスの 使 用 法Znspace "%SYS"Set locales = ##class(%Library.ResultSet).%New("Config.NLS.Locales:List")If $IsObject(locales) {Set locales.RuntimeMode = 1Set sc = locales.Execute("*")If $SYSTEM.Status.IsOK(sc) {Write !While locales.Next() {Write locales.Data("Name"), " - ", locales.Data("Description"), !}}}2.1.2.3 システムおよびプロセス・テーブル・データの 表 示この 例 を 実 行 する 前 に 一 部 のプロパティが 外 部 で 変 更 されている 場 合 を 除 き、この 例 では、システム・テーブルとプロセス・テーブルに 同 じ 値 が 表 示 されます。Set IOTables = "Process" _"/CacheTerminal" _"/OtherTerminal" _"/File" _"/Magtape" _"/TCPIP" _"/DSMDDP" _"/DTMDCP" _"/SystemCall" _"/Printer"Set IntTables = "PatternMatch" _"/Identifier" _"/Uppercase" _"/Lowercase" _"/Titlecase" _"/Collation" _"/XYAction"// iterate over the systems, and then the process dataFor Type = "System", "Process"{Write !Set Table = ##class(%SYS.NLS.Table).%New(Type)Write "Type: ", Type, !}Write "I/O Tables", !For i = 1 : 1 : $LENGTH(IOTables, "/"){Set PropName = $PIECE(IOTables, "/", i)Write $JUSTIFY(PropName, 15), ": ", $PROPERTY(Table, PropName), !}Write "Internal Tables", !For i = 1 : 1 : $LENGTH(IntTables, "/"){Set PropName = $PIECE(IntTables, "/", i)Write $JUSTIFY(PropName, 15), ": ", $PROPERTY(Table, PropName), !}2.1.2.4 日 付 と 時 刻 の 表 示 の 変 更%SYS.NLS.Format クラスには、 例 えば 日 付 項 目 と 時 間 項 目 を 区 切 る 文 字 をそれぞれに 保 持 する、DateSeparator および TimeSeparator プロパティが 含 まれます。 米 国 の 既 定 のロケールである enu8 (Unicode システムでは enuw) では、これらはそれぞれ、スラッシュ 文 字 (/) とコロン (:) になります。これらの 変 更 方 法 について 以 下 に 例 を 示 します。// display the current defaults// date is 10 April 2005// time is 6 minutes 40 seconds after 11 in the morningWrite $ZDATE("60000,40000"), !// now change the separators and display it againSet fmt = ##class(%SYS.NLS.Format).%New()Set fmt.DateSeparator = "_"Set fmt.TimeSeparator = "^"Write !, $ZDATE("60000,40000")以 下 に 示 すこの 例 では、 月 の 名 前 がアルファベットの 連 続 する 文 字 に 変 換 されます (デモンストレーション 用 )。このためには、MonthName プロパティに、スペースで 区 切 った 月 名 一 覧 を 設 定 します。リストの 先 頭 文 字 はスペースです。Caché 専 用 のシステム/ツールおよびユーティリティ 9


Caché システムのカスタマイズ// get the format class instanceSet fmt = ##class(%SYS.NLS.Format).%New()// define the month namesSet Names = " AAA BBB CCC DDD EEE FFF GGG HHH III JJJ KKK LLL"Set fmt.MonthAbbr = NamesSet rtn = ##class(%SYS.NLS.Format).SetFormatItem("DATEFORMAT", 2)// show the resultWrite $ZDATE(60000, 2)2.1.2.5 数 字 の 表 示 方 法 の 変 更%SYS.NLS.Format 内 の 一 部 のプロパティは、$Number() が 数 字 を 解 釈 する 方 法 を 制 御 します。 英 語 のロケールでは、整 数 と 小 数 点 以 下 の 数 字 の 区 切 りに 小 数 点 が 使 用 され、 数 字 を 3 桁 ずつ 区 切 るためにコンマが 使 用 されています。これも 変 更 可 能 です。// give the baseline displayWrite $Number("123,456.78"), !Set fmt = ##class(%SYS.NLS.Format).%New()// use "/" for groups of digitsSet fmt.NumericGroupSeparator = "."// group digits in blocks of 4Set fmt.NumericGroupSize = 4// use ":" for separating integer and fractional partsSet fmt.DecimalSeparator = ","// try interpreting againWrite $Number("12.3456,78"), !2.1.2.6 ファイルの 変 換 の 設 定以 下 の 例 は、ファイルに 書 き 込 まれたデータ 表 現 をアプリケーションで 制 御 しています。// show the process default translation to UTF-8Set Tbl = ##class(%SYS.NLS.Table).%New("Process")Write "Process default translation: ", Tbl.File, !// create and open a temporary file// use XML for the translationSet TempName = ##class(%Library.File).TempFilename("log")Set TempFile = ##class(%Library.File).%New(TempName)Do TempFile.Open("WSNK\XML\")Write "Temp file: ", TempFile.CanonicalNameGet(), !// write a few characters to show the translation// then close itDo TempFile.WriteLine(("--" _ $CHAR(38) _ "--"))Do TempFile.Close()// now re-open it in raw mode and show contentDo TempFile.Open("RSK\RAW\")Do TempFile.Rewind()Set MaxChars = 50Set Line = TempFile.Read(.MaxChars)Write "Contents: """, Line, """", !// finishDo TempFile.Close()Do ##class(%Library.File).Delete(TempName)Set TempFile = ""2.1.3 Config.NLS クラス%SYS.NLS はあらゆる 場 所 で 使 用 可 能 であり、 一 般 的 な 使 用 を 目 的 としていますが、これとは 対 照 的 に、Config.NLS のクラスは、%SYS ネームスペースでのみ、 管 理 者 権 限 を 持 っているユーザのみが 使 用 できます。 通 常 、カスタムのロケールおよびテーブルを 作 成 する 必 要 がある 管 理 者 は、 管 理 ポータルで NLS ページを 使 用 します。 代 わりに、この 目 的 のために、^NLS ルーチンを 使 用 することもできます。 特 別 な 要 求 を 持 つユーザを 除 いては、Config.NLS を 使 用 する 必 要はありません。10 Caché 専 用 のシステム/ツールおよびユーティリティ


各 国 言 語 サポートのシステム・クラスの 使 用 法Config.NLS パッケージには、 以 下 の 3 つのクラスがあります。• Locales – 国 または 地 理 的 地 域 に 対 するすべての 定 義 および 既 定 値 を 格 納 します。• Tables – テーブルに 関 する 高 レベルの 説 明 を 格 納 しますが、マッピング 自 体 は 格 納 しません。• SubTables – 固 有 の 文 字 のマッピングを 格 納 します。 複 数 のテーブルで 共 有 することができます。Tables クラスと SubTables クラスが 分 かれている 主 な 理 由 は、データの 重 複 を 避 けるためです。 異 なる 文 字 セットに 対する Tables が、 同 一 のマッピングを 共 有 する (したがって、 同 一 の SubTable を 共 有 する) こともあります。また、Tablesのクラスでは 既 定 のアクションと 置 換 値 を 定 義 します ( 上 記 の %SYS.NLS 内 のこれらのプロパティに 関 する 説 明 を 参 照 )。したがって、 別 個 の Tables が、 同 一 の SubTable を 共 有 している 場 合 でも、これらの 属 性 が 異 なっている 場 合 があります。このような 柔 軟 性 があるため、Tables と SubTables の 間 の 関 係 を 適 切 に 管 理 することは 多 少 複 雑 になりますが、メリットも 大 きいので 無 駄 ではありません。すべてのハウスキーピング 処 理 が 行 われている、 管 理 ポータル、^NLS ルーチンおよび %SYS.NLS クラスでは、Tables と SubTables が 分 かれていることはユーザからはわかりません。ただし、Config.NLSを 使 用 する 際 には、これを 明 示 的 に 行 う 必 要 があります。2.1.3.1 ユーザ 定 義 のロケールおよびテーブルの 名 前 付 け 規 約カスタム 項 目 とシステム 項 目 とを 区 別 して、 単 純 にアップグレードするには、 項 目 名 の 先 頭 に y を 使 用 します。 例 えば、XLT-yEBCDIC-Latin1 や XLT-Latin1-yEBCDIC のようにします。注 意この 規 約 に 準 拠 しないユーザ 定 義 のテーブル、サブテーブルおよびロケールは、システムのアップグレード 時 に 削 除 される 場 合 があります。これを 避 けるには、ユーザ 定 義 のテーブルとロケールを XMLファイルにエクスポートし、アップグレード 後 に 再 インポートします。インターシステムズの SubTable をコピーして、カスタムの SubTable を 作 成 した 場 合 、このタスクを 実 行 するユーティリティは、 自 動 的 に 同 じ 名 前 を 使 用 し、 数 字 の 接 尾 辞 を 付 加 します。したがって、Latin2-to-Unicode SubTable のコピーの 名 前 は、XLT-Latin2-Unicode.0001 および XLT-Unicode-Latin2.0001 のようになります。2.1.4 Config.NLS の 使 用 の 例このセクションでは、 以 下 の 例 について 説 明 します。• 使 用 可 能 なロケールのリスト• 特 定 のロケールのテーブルのリスト• カスタム・ロケールの 作 成2.1.4.1 使 用 可 能 なロケールのリストこの 例 では、クエリを 使 用 し、 使 用 可 能 なロケール 識 別 子 と 説 明 のリストを 取 得 します。Caché のインストール 時 には、システムに 適 したロケール (8 ビット 文 字 のみをサポートするシステムでは 8 ビットのロケール、マルチバイト 文 字 をサポートするシステムでは Unicode ロケール) のみが 使 用 可 能 になります。// use the query in Config.NLS to get the localesZNspace "%SYS"Set Query = ##class(%Library.ResultSet).%New("Config.NLS.Locales:List")Set code = Query.Execute("*")If (##class(%SYSTEM.Status).IsError(code)){Do ##class(%SYSTEM.Status).DisplayError(Code)}Quit// display each of them in turnWrite "Available locales and descriptions", !While (Query.Next(.code)){If (##class(%SYSTEM.Status).IsError(code)){Caché 専 用 のシステム/ツールおよびユーティリティ 11


Caché システムのカスタマイズ}Do ##class(%SYSTEM.Status).DisplayError(Code)Quit}Write Query.Get("Name"), ": ", Query.Get("Description"), !2.1.4.2 特 定 のロケールのテーブルのリスト以 下 の 例 では、 米 国 の 英 語 ( 使 用 可 能 な 場 合 ) に 対 する Unicode ロケールを 構 成 するテーブルを 示 します。ZNspace "%SYS"// establish the locale identifier, try// United States - English - Unicode// United States - English - 8-bitSet Loc = "enuw"Do ##class(Config.NLS.Locales).Exists(Loc, .Ref, .Code)If (##class(%SYSTEM.Status).IsError(Code)){Set Loc = "enu8"Do ##class(Config.NLS.Locales).Exists(Loc, .Ref, .Code)If (##class(%SYSTEM.Status).IsError(Code)){Do ##class(%SYSTEM.Status).DisplayError(Code)}}Quit// get the local array of table namesWrite "Tables for locale: ", Loc, !Do Ref.GetTables(.Tables)Set Type = $ORDER(Tables(""))While (Type '= ""){Set Name = $ORDER(Tables(Type, ""))While (Name '= ""){Set Mod = $ORDER(Tables(Type, Name, ""))While (Mod '= ""){Write Type, " - ", Name, " - ", Mod, !Set Mod = $ORDER(Tables(Type, Name, Mod))}Set Name = $ORDER(Tables(Type, Name))}Set Type = $ORDER(Tables(Type))}2.1.4.3 カスタム・ロケールの 作 成この 例 では、カスタム・テーブルでカスタム・ロケールを 作 成 するためのテンプレートを 提 供 します。このカスタム・テーブルでは、EBCDIC ( 米 国 で 使 用 される 一 般 的 な 形 式 ) と Latin-1 (ISO-8859–1) の 間 の 変 換 を 実 行 します。 詳 細 は、 各 クラスのドキュメントを 参 照 してください。その 他 のすべてのテーブルについては、 最 初 に、 文 字 のマッピングの 定 義 を 取 得 する 必 要 があります。この 例 では、http://source.icu-project.org (International Components for Unicode) の Web サイトのデータ・ファイルを 使 用 します。該 当 するデータ・ファイルは、シャープ 記 号 (#) で 始 まるコメント 行 の 後 に、 以 下 の 形 式 の 一 連 の 変 換 定 義 行 が 続 く、テキスト・ファイルです。 \xee |0ファイルの 抜 粋 を 以 下 に 示 します。##UNICODE EBCDIC_US#_______ _________ \x00 |0 \x01 |0 \x02 |0 \x03 |0 \x37 |0 \x2D |0...12 Caché 専 用 のシステム/ツールおよびユーティリティ


各 国 言 語 サポートのシステム・クラスの 使 用 法これらの 行 では、Unicode 文 字 Uaaaa が EBCDIC 文 字 の \xbb にマッピングされることを 示 しています (ここで aaaa および bb は 16 進 数 の 表 現 です)。このテーブルは 逆 変 換 が 可 能 であり、EBCDIC 文 字 の \xbb を Unicode 文 字 の Uaaaaに 再 マッピングすることができると 仮 定 しています。これにより、1 回 のスキャンで、 同 じデータ・ファイルから 両 側 (つまりEBCDIC-to-Latin1 および Latin1-to-EBCDIC) を 作 成 することができます。Unicode の 範 囲 は 0 ~ 255 のみなので、これは 実 際 には Latin-1 テーブルになります。このプロセスでは、 最 初 に SubTable オブジェクトを 作 成 し、 次 に Table を 作 成 し、 最 後 に Locale を 作 成 します。 最 初の 手 順 として、このプロセスでは 2 つの SubTables オブジェクトを 作 成 し、Name および Type プロパティを 初 期 化 して、定 義 ファイルから 読 み 込 んだデータで FromTo マッピング 配 列 を 埋 めます。SubTable の 名 前 の 形 式 は、Type–FromEncoding–ToEncoding です。 通 常 の I/O 変 換 の Type は “XLT” であるので、SubTable の 名 前 は XLT-yEBCDIC-Latin1 および XLT-yLatin1-EBCDIC になります。以 下 のコードで SubTables オブジェクトを 作 成 します。わかりやすくするために、ここでは 省 略 していますが、 実 際 のプログラムでは、 何 度 もコードの 整 合 性 チェックが 行 われます。この 例 では、このサンプル・コードを 何 度 も 実 行 できるように、 既 存 の 以 前 のバージョンの 同 じオブジェクト (SubTables、Tables および Locales) を 削 除 しています。 厳 密 には、クラス・メソッド Exists() を 使 用 して 以 前 のオブジェクトの 存 在 をチェックし、 既 に 存 在 する 場 合 は、 別 の 処 理 を 実 行 する 必要 があります。// Names for the new SubTables (save for later)Set nam1 = "XLT-Latin1-yEBCDIC"Set nam2 = "XLT-yEBCDIC-Latin1"// Delete existing SubTables instances with same idsDo ##class(Config.NLS.SubTables).Delete(nam1)Do ##class(Config.NLS.SubTables).Delete(nam2)// Create two SubTable objectsSet sub1 = ##class(Config.NLS.SubTables).%New()Set sub2 = ##class(Config.NLS.SubTables).%New()// Set Name and DescriptionSet sub1.Name = nam1Set sub1.Description = "ICU Latin-1->EBCDIC sub-table"Set sub2.Name = nam2Set sub2.Description = "ICU EBCDIC ->Latin-1 sub-table"SubTables には、マルチバイトの 変 換 を 実 行 するかどうかを 示 す 小 さな 整 数 である、type プロパティが 含 まれます。この例 では、type は、シングルバイト・マッピングを 示 す 0 に 設 定 されています。データ・ファイルに 定 義 されていないコード・ポイント ( 文 字 ) がそれ 自 体 にマッピングされるように、このマッピングは 初 期 化 されています。// Set Type (single-to-single)Set sub1.Type = 0Set sub2.Type = 0// Initialize FromTo arraysFor i = 0 : 1 : 255{Do sub1.FromTo.SetAt(i, i)Do sub2.FromTo.SetAt(i, i)}次 に、アプリケーションがファイルを 読 み 込 みます。ファイルの 定 義 が、 既 定 のマッピングとして 設 定 された 定 義 をオーバーライドします。$ZHEX() 関 数 により、コードが 16 進 数 から 10 進 数 に 変 換 されます。// Assume file is in the mgr directorySet file = "glibc-EBCDIC_US-2.1.2.ucm"// Set EOF exit trapSet $ZTRAP = "EOF"// Make that file the default deviceOpen fileUse fileFor{Read xIf x?1"".E{Set uni = $ZHEX($E(x,3,6)),ebcdic = $ZHEX($E(x,12,13))Do sub1.FromTo.SetAt(ebcdic,uni)Caché 専 用 のシステム/ツールおよびユーティリティ 13


Caché システムのカスタマイズ}Do sub2.FromTo.SetAt(uni,ebcdic)}EOF // No further dataSet $ZT = ""Close file// Save SubTable objectsDo sub1.%Save()Do sub2.%Save()これで 文 字 のマッピングは 完 了 です。 次 に、 定 義 したばかりの SubTables オブジェクトを 参 照 する Table オブジェクトを作 成 します。Table オブジェクトは 実 際 には SubTables の 記 述 子 であり、プロパティはわずかしかありません。 以 下 のコードによって、この 2 つが 関 連 付 けられます。// Delete existing Tables instances with same idsDo ##class(Config.NLS.SubTables).Delete("XLT", "Latin1", "yEBCDIC")Do ##class(Config.NLS.SubTables).Delete("XLT", "yEBCDIC", "Latin1")// Create two Table objectsSet tab1 = ##class(Config.NLS.Tables).%New()Set tab2 = ##class(Config.NLS.Tables).%New()// Set descriptionSet tab1.Description = "ICU loaded Latin-1 -> EBCDIC table"Set tab2.Description = "ICU generated EBCDIC -> Latin-1 table"// Set From/To encodingsSet tab1.NameFrom = "Latin1"Set tab1.NameTo = "yEBCDIC"Set tab2.NameFrom = "yEBCDIC"Set tab2.NameTo = "Latin1"// Set SubTableSet tab1.SubTableName = nam1Set tab2.SubTableName = nam2// Set TypeSet tab1.Type = "XLT"Set tab2.Type = "XLT"// Set Default Action// 1 = Replace with replacement valueSet tab1.XLTDefaultAction = 1Set tab2.XLTDefaultAction = 1// Set Replacement value of "?"Set tab1.XLTReplacementValue = $ASCII("?")Set tab2.XLTReplacementValue = $ASCII("?")// Set Reversibility// 1 = Reversible// 2 = GeneratedSet tab1.XLTReversibility = 1Set tab2.XLTReversibility = 2// Set Translation Type// 0 = non-modal to non-modalSet tab1.XLTType = 0Set tab2.XLTType = 0// Save Table objectsDo tab1.%Save()Do tab2.%Save()Tables が 定 義 されたら、 構 築 の 最 後 の 手 順 として、 新 しいテーブルを 組 み 込 むロケール・オブジェクトの 定 義 を 行 います。アプリケーションで、 空 の Locale オブジェクトを 作 成 し、 各 プロパティを 埋 め 込 みます。これは、Tables およびSubTables の 場 合 と 同 様 です。ただし、Locale の 場 合 はより 大 きく 複 雑 です。このような 単 純 な 変 更 を 行 う 最 も 簡 単 な 方法 は、 既 存 のロケールをコピーして、 必 要 箇 所 のみを 変 更 することです。このプロセスでは、ソース・ロケールとして enu8を 使 用 し、yen8 という 新 しい 名 前 を 付 けます。イニシャル y によって、これがカスタム・ロケールであることが 明 確 になり、アップグレード 時 に 削 除 されなくなります。14 Caché 専 用 のシステム/ツールおよびユーティリティ


各 国 言 語 サポートのシステム・クラスの 使 用 法// Delete existing Locales instance with the same idDo ##class(Config.NLS.Locales).Delete("yen8")// Open source localeSet oldloc = ##class(Config.NLS.Locales).%OpenId("enu8")// Create cloneSet newloc = oldloc.%ConstructClone()// Set new Name and DescriptionSet newloc.Name = "yen8"Set newloc.Description = "New locale with EBCDIC table"ロケールが 適 切 に 設 定 されると、プロセスでは、 起 動 時 にロードされる I/O テーブルのリストに EBCDIC テーブルを 追加 します。これは、 以 下 のように、 配 列 プロパティ XLTTables にノードを 挿 入 することによって 行 われます。XLTTables() = • tablename により、このロケールの 入 力 テーブルと 出 力 テーブルのペアが 特 定 されます。この 名 前 は y で 始 まる 必 要 はないので、EBCDIC を 使 用 します。• components は、 以 下 のような 4 項 目 のリストです。1. 入 力 “From” のエンコーディング2. 入 力 “To” のエンコーディング3. 出 力 “From” のエンコーディング4. 出 力 “To” のエンコーディング以 下 のコードで、 使 用 可 能 なロケールのリストにテーブルを 追 加 します。// Add new table to localeSet component = $LISTBUILD("yEBCDIC", "Latin1", "Latin1", "yEBCDIC")Do newloc.XLTTables.SetAt(component, "EBCDIC")このロケールを、EBCDIC 磁 気 テープで 読 み 込 む 場 合 などに 頻 繁 に 使 用 する 場 合 は、 以 下 のコードで、このデバイスのクラスに 対 する 既 定 値 として 設 定 します。// Set default for Magnetic TapesSet newloc.TranMagTape = "EBCDIC"// Save the changesDo newloc.%Save()Caché でロケールを 使 用 できるようにするには、その 内 部 形 式 にコンパイルする 必 要 があります。これは、“ロケールの検 証 ” と 呼 ばれることもあります。IsValid() クラス・メソッドは、 詳 細 な 分 析 を 行 い、ロケールが 適 切 に 定 義 されていない場 合 、 人 間 が 読 むことのできるメッセージと 共 に、2 つの 配 列 を 返 します。1 つはエラーの 配 列 、もう 1 つは 警 告 の 配 列です。// Check locale consistencyIf '##class(Config.NLS.Locales).IsValid("yen8", .Errors, .Warns){Write !,"Errors: "}ZWrite ErrorsWrite !,"Warnings: "ZWrite WarnsQuit// Compile new localeSet status = ##class(Config.NLS.Locales).Compile("yen8")If (##class(%SYSTEM.Status).IsError(status)){Do $System.OBJ.DisplayError(status)}Else{Write !,"Locale yen8 successfully created."}Caché 専 用 のシステム/ツールおよびユーティリティ 15


Caché システムのカスタマイズ2.1.5 %Library.GlobalEdit の 使 用 によるグローバルの 照 合 の 設 定Caché 4.1 以 降 、 新 規 に 作 成 されたグローバルの 照 合 は、グローバルが 作 成 されたデータベースの 既 定 の 照 合 に 自 動的 に 設 定 されています。データベースが 作 成 されるとき、データベースの 既 定 の 照 合 を Caché 標 準 か、システムにインストールされている 照 合 のうちの 1 つに 設 定 することができます。データベースの 既 定 の 照 合 が 一 度 設 定 されると、このデータベースで 作 成 されたすべてのグローバルは、この 既 定 の 照 合 で 作 成 されます。データベースで 作 成 されたすべてのグローバルは、データベースの 既 定 の 照 合 を 持 つので、Caché もこの 振 る 舞 いをオーバーライドする 機 能 をサポートします。これを 行 うには、%Library.GlobalEdit クラスの Create() メソッドを 使 用 して、 希望 の 照 合 を 指 定 します。Set sc = ##class(%Library.GlobalEdit).Create(ns,global,collation,growthblk,ptrblock,keep,journal,.exists)以 下 はその 説 明 です。• ns — ネームスペースを 指 定 します。"" は 現 在 のネームスペースを 示 し、^^directoryname は 特 定 のディレクトリを 参 照 します。• global — ^cz2 などの、 先 頭 に ^ を 含 むグローバル 名 を 指 定 します。• collation — 照 合 を 指 定 します。 照 合 は、サポート 対 象 の 照 合 のうちのどれか 1 つです。• growthblk — データの 開 始 ブロックを 指 定 します。• ptrblk — ポインタの 開 始 ブロックを 指 定 します。• keep — グローバルが 削 除 されるときに、グローバルのディレクトリ・エントリを 保 持 するかどうかを 指 定 します。1 に 設定 すると、グローバルが 削 除 されるときに 照 合 、 保 護 、およびジャーナル 属 性 を 保 持 します。• journal — この 引 数 は 関 係 がなくなったので、 無 視 されます。• exists — グローバルが 既 に 存 在 するかどうかを 示 す 変 数 を、 参 照 によって 指 定 します。グローバルが 他 のグローバルとは 異 なる 照 合 を 必 要 とする 環 境 では、インターシステムズはデータベースを 異 なる 照 合ごとに 設 定 することをお 勧 めします。そうすれば、 必 要 な 照 合 を 持 つデータベースに 各 グローバルをマップするグローバル・マッピングをネームスペースに 追 加 することができます。このメソッドによって、 特 別 に Create() メソッド 呼 び 出 しを 使用 したアプリケーション・コードを 変 更 することなく、 照 合 を 混 合 して 使 用 することができます。注 釈Caché の 従 来 のバージョンでは、 新 規 に 開 発 されたグローバルは、そのグローバルを 作 成 するプロセスの 既 定の 照 合 を 持 ちます。 照 合 設 定 のこのメソッドは、 現 在 はサポートされていません。2.1.5.1 サポート 対 象 の 照 合以 下 は、CreateGlobal^%DM サブルーチンの collation 引 数 で 使 用 される、Caché でサポートされている 照 合 です。• 5 — Cache standard• 10 — German1• 11 — Portuguese1• 12 — Polish1• 13 — German2• 14 — Spanish116 Caché 専 用 のシステム/ツールおよびユーティリティ


^%ZSTART ルーチンと ^%ZSTOP ルーチンによる 開 始 動 作 と 停 止 動 作 のカスタマイズ• 15 — Danish1• 17 — Greek1• 18 — Czech1• 19 — Czech2• 20 — Portuguese2• 21 — Finnish1• 22 — Japanese1• 23 — Cyrillic2• 24 — Polish2• 26 — Chinese22.2 ^%ZSTART ルーチンと ^%ZSTOP ルーチンによる 開 始 動 作 と停 止 動 作 のカスタマイズ注 釈( 正 確 ではありませんが) 慣 習 的 に、ルーチンは 名 前 の 一 部 にキャレットがあるかのように 参 照 されます。このドキュメントではこの 慣 習 に 従 いますが、ルーチンの 実 際 の 名 前 を 直 接 参 照 する 場 合 は 例 外 とします。Caché では、 特 定 のイベントが 発 生 した 際 に、カスタム・コードを 実 行 できます。 必 要 とされる 手 順 は 以 下 の 2 つです。1. ^%ZSTART ルーチン、^%ZSTOP ルーチン、またはそれらの 両 方 を 定 義 します。それらのルーチンでは、 特 定 の 処 理 が 開 始 または 停 止 した 際 に 実 行 するサブルーチンを 定 義 できます。^%ZSTART と ^%ZSTOP は、%SYS ネームスペースで 定 義 する 必 要 がありますが、 既 定 以 外 のデータベースにマッピングできます。2. 管 理 ポータルを 使 用 して、 目 的 のサブルーチンを 呼 び 出 すように Caché を 構 成 します。具 体 的 には、^%ZSTART ルーチンと ^%ZSTOP ルーチンを 定 義 し、 特 定 の 名 前 を 持 つサブルーチンを 含 める 場 合 、Cachéでは、 処 理 の 開 始 時 または 終 了 時 に、 自 動 的 にこれらのサブルーチンが 呼 び 出 されます。サブルーチン 名 は 以 下 のとおりです。• SYSTEM — Caché がシステムとして 開 始 または 停 止 する 際 に 実 行 されます。• LOGIN — ユーザがログインまたはログアウトを 実 行 する 際 に 実 行 されます。• JOB — JOB が 開 始 または 終 了 する 際 に 実 行 されます。• CALLIN — 外 部 プログラムが CALLIN を 開 始 または 完 了 する 際 に 実 行 されます。例 えば、LOGIN^%ZSTART が 定 義 されていて、 管 理 ポータルを 使 用 してこのサブルーチンを 有 効 にしている 場 合 、ユーザがログインすると、Caché では LOGIN^%ZSTART が 自 動 的 に 呼 び 出 されます。これらのサブルーチンは、 複 雑 な 計 算 をしたり 長 時 間 実 行 するためのものではありません。ネットワーク・アクセスなどのように 長 期 的 に 計 算 したり、 潜 在 的 に 長 時 間 わたって 実 行 すると、 呼 び 出 されたルーチンが 返 されるまで 動 作 の 完 了 が遅 れます。この 場 合 、 起 動 までに 時 間 がかかりすぎるために、ユーザのログインに 長 い 時 間 がかかるか、JOB の 処 理 能力 が 低 下 する 場 合 があります。Caché 専 用 のシステム/ツールおよびユーティリティ 17


Caché システムのカスタマイズ注 釈注 釈これらのサブルーチンは、 通 常 の Caché 操 作 の 一 部 として 呼 び 出 されます。つまり、 電 源 障 害 など、Caché を異 常 終 了 させる 外 部 イベントでは、^%ZSTOP への 呼 び 出 しが 生 成 されません。システムに ^%ZSTOP が 実 装 され、アプリケーションに 1つ 以 上 の $HALT ルーチンが 実 装 されている 場 合 、 最後 の $HALT が HALT コマンドで 停 止 するまで、^%ZSTOP コードは 実 行 されません。$HALT ルーチンが 自 身の HALT コマンドの 発 行 に 失 敗 すると、^%ZSTOP コードは 実 行 されない 可 能 性 があります。2.2.1 設 計 に 関 する 考 慮 事 項^%ZSTART および ^%ZSTOP の 実 行 環 境 には、ある 程 度 制 約 があります。 設 計 者 は 以 下 のような 点 に 注 意 してください。• ルーチンは Caché ObjectScript で 記 述 しなければなりません。• 任 意 のルーチン・エントリ・ポイントが 呼 び 出 されたときに、 引 数 として 渡 される 値 はありません。さまざまな 状 況 で 異なるアルゴリズムが 適 用 できる 場 合 は、 呼 び 出 されたエントリ・ポイントはルーチンの 外 部 、つまりグローバルやシステム 変 数 などのデータを 調 査 して、 何 を 実 行 するかを 決 定 する 必 要 があります。• あらゆる 条 件 下 で、ルーチンがうまく 動 作 することを 確 認 してください。ルーチンは 防 御 的 に 記 述 します。つまり、タスクの 完 了 に 必 要 なすべてのリソースがすぐ 使 用 できる 場 所 にあり、 可 能 であれば 演 算 処 理 が 始 まる 前 に 予 約 されることがこれらのルーチンで 確 認 されるようにします。 発 生 したエラーはそのシステム 関 数 の 失 敗 として 報 告 されるので、エラー 抑 制 と 処 理 の 観 点 から 設 計 を 考 えることが 重 要 です。リソースが 見 つからない、あるいはエラーが 起 こる際 に 適 切 に 回 復 できない 場 合 、さまざまな 結 果 がもたらされます。これには、Caché の 開 始 の 失 敗 、スタジオなどの主 要 な 機 能 の 動 作 の 不 具 合 やすぐには 検 知 されないようなわずかな 影 響 などが 含 まれます。これらのルーチンは、細 心 の 注 意 を 払 って 記 述 し、シミュレート 条 件 下 でデバッグし、プロダクション・システムで 使 用 する 前 にシミュレート環 境 下 でテストすることを 推 奨 します。• 以 前 の 呼 び 出 しの 間 に 見 つかった 条 件 や、 異 なるエントリ・ポイントが 有 効 であると 想 定 しないでください。 例 えば、JOB^%ZSTART への 連 続 呼 び 出 し 間 に、 次 の 呼 び 出 しが 発 生 する 前 に 前 回 使 用 したファイルが 削 除 される 可 能 性もあります。• 各 エントリ・ポイントはタスクを 効 率 的 に 実 行 します。タスクの 一 部 が、 潜 在 的 に 長 時 間 実 行 するものであれば、ユーザのアプリケーションの 別 の 部 分 によって 後 から 処 理 するように、 完 了 に 十 分 な 情 報 をキューに 格 納 することをお 勧めします。• 統 計 的 に 使 用 する 目 的 で、エントリ・ポイントでデータを 永 続 的 に 保 持 させる 場 合 、データの 保 持 にはグローバルや外 部 ファイルなどを 使 用 する 必 要 があります。• ルーチンを 実 行 する 環 境 についての 条 件 は、 最 小 限 にしてください。 例 えば、このようなルーチンの 開 発 者 は、プログラムが 常 に 特 定 のジョブ 番 号 で 実 行 されるとは 予 測 できません。 設 計 者 は、さまざまなエントリ・ポイントが 特 定 の順 序 で 呼 び 出 されることを 想 定 できません。Caché を 実 装 する 複 数 のプロセスを 呼 び 出 す 順 序 が、 確 定 的 であることはほとんどありません。• ルーチンは、システムの 開 始 中 の 特 定 の 時 点 で 呼 び 出 されるとは 限 りません。 開 始 中 のイベントの 配 列 は、リリースのたびに、または 再 開 のたびに 変 更 する 可 能 性 があります。• いくつかの 例 外 を 除 き、ルーチンでは 見 つけた 情 報 をそのままにしておく 必 要 があります。 例 えば、サブルーチン 内で、エントリ 時 と 終 了 時 に $IO の 値 を 保 存 してリストアせずに 再 代 入 すると、ほとんど 確 実 にエラーの 原 因 になります。 呼 び 出 し 元 のルーチンは、このような 変 更 があったことを 知 る 方 法 がありません。また、 呼 び 出 し 側 で 実 行 環 境に 対 する 変 更 を 防 ぐのは 非 常 に 困 難 です。したがって、 呼 び 出 される 側 のサブルーチンで、システム 処 理 のコンテキストを 妨 害 しなような 対 策 を 講 じる 必 要 があります。この 変 更 不 可 規 則 の 一 般 的 な 例 外 として、アプリケーション・プログラムやインストール・プログラムに 固 有 の、プロセス・ローカル 値 は 変 更 できます。 例 えば、SYSTEM^%ZSTART エントリ・ポイントで、システム 全 体 の 既 定 値 を 設 定 します。 同 様 に、アプリケーションのテストのために 日 付 を 設 定 し、 月 末 処 理 の 妥 当 性 を 検 証 することもできます。• ^%ZSTOP には、リモート・データベース 内 のグローバルへの 参 照 を 含 めることができません。^%ZSTOP の 呼 び 出 し時 に、これらの 参 照 の 一 部 がアクセスできなくなります。18 Caché 専 用 のシステム/ツールおよびユーティリティ


^%ZSTART ルーチンと ^%ZSTOP ルーチンによる 開 始 動 作 と 停 止 動 作 のカスタマイズ• これらのルーチンが CACHESYS と 異 なるデータベースにマップされている 場 合 、Caché は、CACHESYS ではなく、そのデータベースから 実 行 しようとします。 当 然 ながら、Caché は、 呼 び 出 しルーチンにそのデータベースへの適 切 なアクセス 権 限 があることを 事 前 に 確 認 します。そのネームスペースで 必 要 なあらゆるアプリケーション・グローバルとマッピングに 対 して、ルーチンに 適 切 なアクセス 権 限 があることを 保 証 するのは、 管 理 者 の 責 任 となります。• SYSTEM^%ZSTART と SYSTEM^%ZSTOP は、$USERNAME が _SYSTEM に 設 定 され、$ROLES が %All に 設 定 された 状 態 で 実 行 されます。コードを 別 のユーザ 名 で 実 行 するには、$SYSTEM.Security.Login() を 使 用 して 目 的 の名 前 を 設 定 してから、カスタム・コードで 続 行 します。JOB を 使 用 して 追 加 プロセスを 起 動 すると、それらのプロセスは、 開 始 プロセスと 同 じユーザ 名 (およびロール) を 継 承 します。注 意^%ZSTART と ^%ZSTOP にあるすべてのエントリ・ポイントは、システム 処 理 の 重 要 ポイントで 呼 び 出され、システム 処 理 、さらにはデータ 処 理 に 対 しても、 広 範 な 影 響 が 及 ぶ 場 合 があります。これらのルーチンの 指 定 目 的 により、この 高 いレベルの 特 権 が 必 要 になります。このため、これらのエントリ・ポイントで 呼 び 出 すことができるコードのすべてが、くまなくテストされていることを 確 認 する 必 要 があります。さらに、ユーザ 指 定 コードが XECUTE を 介 して、つまり 間 接 的 に 実 行 されることを 許 可 しないでください。• 終 了 (つまり 停 止 ) するプロセスでは、ECP データ・サーバからの 回 答 を 必 要 とする 任 意 の 参 照 で エラーが 発 生 する 場 合 があります。注 釈アップグレードでは、Caché は、CACHESYS データベースにマップされた %Z* ルーチンのみを 保 持 します。また、.INT コードまたは .MAC コードが 存 在 する 場 合 は、これらをリコンパイルします。 他 のデータベース 内 でのルーチンの 保 存 は、サイト 管 理 者 が 判 断 します。2.2.2 %ZSTART および %ZSTOP を 有 効 にするルーチンの 設 計 、 開 発 、コンパイルが 完 了 し、テストできるようになっていれば、 管 理 ポータルから 個 々のエントリ・ポイントを 有 効 にすることができます。[システム] > [ 構 成 ] > [ 開 始 設 定 ] ページに 移 動 して、 適 切 な 個 々の 設 定 を 編 集 します。• SysStart、SysHalt• ProcessStart、ProcessHalt• JobStart、JobHalt• CallinStart、CallinHalt1 つ 以 上 のエントリ・ポイントを 無 効 にするには、 同 じプロシージャを 使 用 しますが、 値 を [ 偽 ] に 変 更 します。2.2.3 ^%ZSTART および ^%ZSTOP のデバッグ最 終 的 な 環 境 において ^%ZSTART と ^%ZSTOP をデバッグする 機 会 は 制 限 されています。エラーが 発 生 すると、エラーはオペレータのコンソール・ログに 書 き 込 まれます。これは、それらのルーチンが 実 行 している 時 点 での 現 在 のデバイスです。これは 管 理 者 用 ディレクトリにある cconsole.log ファイルです。メッセージは、 失 敗 の 原 因 とエラーが 検 出 された 位 置 を 示 します。この 位 置 は、プログラム・ロジックまたはフローで 実 際にエラーが 発 生 した 場 所 とは 異 なる 場 合 があります。 開 発 者 は、 提 供 された 情 報 からエラーの 特 性 と 場 所 を 推 定 し、ルーチンを 修 正 してください。これにより、 今 後 のテストでは、 発 生 するエラーの 特 性 についてより 多 くの 情 報 を 得 ることができるようになります。Caché 専 用 のシステム/ツールおよびユーティリティ 19


Caché システムのカスタマイズ2.2.4 ^%ZSTART および ^%ZSTOP の 削 除ルーチンを 削 除 する 前 に、 管 理 ポータル 経 由 でエントリ・ポイントの 各 種 オプションを 必 ず 無 効 にすることを 強 くお 勧 めします。この 変 更 を 有 効 にするために、ポータルが Caché を 再 起 動 するように 警 告 した 場 合 は、 次 に 進 む 前 に 再 起 動 も 実行 してください。これにより、 削 除 される 間 に 実 行 されるエントリ・ポイントがなくなります。^%ZSTART および ^%ZSTOP (および、サポートする 任 意 のルーチン) が 永 続 的 に 格 納 されることを 覚 えておいてください。これらのトレースをすべて 削 除 するには、 管 理 ポータルから 削 除 してください。2.2.5 例以 下 は、システムの 動 作 状 況 を 追 跡 する 単 純 なログの 実 例 です。^%ZSTART と ^%ZSTOP の 例 を 示 します。どちらでも、3 番 目 の 例 のルーチン (^%ZSSUtil) のサブルーチンが 便 宜 上 使 用 されます。2.2.5.1 ^%ZSSUtil の 例このルーチンには、2 つのパブリック・エントリ・ポイントがあります。1 つは、オペレータのコンソール・ログ・ファイルに 単一 行 を 書 き 込 みます。もう 1 つは、ローカル・ログ・ファイルに 名 前 と 値 の 組 み 合 わせのリストを 書 き 込 みます。どちらのファイルも 管 理 者 用 ディレクトリにあり、そのディレクトリは、%Library.File クラスの ManagerDirectory() メソッドにより 返 されます。%ZSSUtil ;; this routine packages a set of subroutines; used by the %ZSTART and %ZSTOP entry points;; does not do anything if invoked directlyquit#Define Empty ""#Define OprLog 1WriteConsole(LineText) PUBLIC ;; write the line to the console log; by default the file cconsole.log in the MGR directorynew SaveIO; save the current device and open the operator console; set up error handling to cope with errors; there is little to do if an error happensset SaveIO = $IOset $ZTRAP = "WriteConsoleExit"open $$$OprLoguse $$$OprLog; we do not need an "!" for line termination; because each WRITE statement becomes its; own console record (implicit end of line)write LineText; restore the previous io deviceclose $$$OprLog; pick up here in case of an errorWriteConsoleExit ;set $ZTRAP = ""use SaveIOquitWriteLog(rtnname, entryname, items) PUBLIC ;; write entries into the log file; the log is presumed to be open as; the default output device;; rtnname: distinguishes between ZSTART & ZSTOP; entryname: the name of the entry point we came from; items: a $LIST of name-value pairsnew ThisIO, ThisLognew i, DataString; preserve the existing $IO device reference; set up error handling to cope with errors; there is little to do if an error happensset ThisIO = $IOset $ZTRAP = "WriteLogExit"20 Caché 専 用 のシステム/ツールおよびユーティリティ


^%ZSTART ルーチンと ^%ZSTOP ルーチンによる 開 始 動 作 と 停 止 動 作 のカスタマイズ; construct the name of the file; use the month and day as part of the name so that; it will create a separate log file each dayset ThisLog = "ZSS"_ "-"_ $EXTRACT($ZDATE($HOROLOG, 3), 6, 10)_".log"; and change $IO to point to our fileopen ThisLog:"AWS":0use ThisLog; now loop over the items writing one line per item pairfor i = 1 : 2 : $LISTLENGTH(items){set DataString = $LISTGET(items, i, "*MISSING*")if ($LISTGET(items, (i + 1), $$$Empty) '= $$$Empty){set DataString = DataString_ ": "_ $LISTGET(items, (i + 1))}write $ZDATETIME($HOROLOG, 3, 1),?21, rtnname,?28, entryname,?35, DataString, !}; stop using the log file and switch $IO back; to the value saved on entryclose $IO; pick up here in case of an errorWriteLogExit ;set $ZTRAP = ""use ThisIOquit各 ラベルの 説 明 を 以 下 に 示 します。^%ZSSUtilこのルーチンは、 他 のルーチンと 同 様 に、 以 下 のコマンドから 呼 び 出 されると 良 好 な 結 果 が 得 られるように、まず QUIT コマンドを 実 行 します。do ^%ZSSUtil#DEFINE 配 列 は、 外 観 をそろえるために、プログラムの 本 文 に 指 定 された 制 約 を 提 供 します。このインスタンスでは、 空 文 字 列 とオペレータのコンソール・ログのデバイス 番 号 を 指 定 します。WriteConsole^%ZSSUtilこのエントリ・ポイントは 非 常 に 単 純 です。 容 量 の 少 ない 出 力 用 に、またデバッグの 出 力 に 使 用 するための 最 小限 のルーチンとして、 設 計 されたものです。引 数 として 1 つの 文 字 列 を 取 り、これをオペレータのコンソール・ログに 出 力 します。ただし、 呼 び 出 し 全 体 にわたり、 現 在 の $IO の 接 続 状 態 を 保 持 し、リストアするための 注 意 が 必 要 です。各 項 目 がデバイスに 送 信 された 結 果 、コンソール・ログには 別 々のレコードが 出 力 されます。したがって、 以 下のように、4 つのレコードを 出 力 します。WRITE 1, 2, 3, !最 初 の 3 つは 1 桁 の 数 字 から 成 り、4 つ 目 は 空 白 行 から 成 ります。1 行 に 複 数 の 項 目 を 記 述 したい 場 合 は、呼 び 出 し 元 がこれらを 文 字 列 に 連 結 させなければなりません。WriteLog^%ZSSUtilこのサブルーチンは、^%ZSTART または ^%ZSTOP 内 の 任 意 のエントリ・ポイントから 呼 び 出 すことができます。最 初 の 2 つの 引 数 により、サブルーチンがどのように 起 動 されたかを 報 告 するために 必 要 な 情 報 を 渡 します。3 番 目 の 引 数 は、ログに 出 力 される 名 前 と 値 の 組 み 合 わせの $LIST です。Caché 専 用 のシステム/ツールおよびユーティリティ 21


Caché システムのカスタマイズこのエントリ・ポイントは 最 初 に、そこで 使 用 するファイルの 名 前 を 作 成 します。ログ 管 理 を 簡 素 化 するため、この名 前 にはルーチンが 入 力 された 月 日 が 含 まれます。したがって、このサブルーチンを 呼 び 出 すと、 現 地 時 間 が深 夜 12 時 を 経 過 するたびにファイルが 新 規 作 成 されます。そのファイル 名 は 呼 び 出 し 時 にのみ 決 定 されるため、 引 数 として 渡 される 名 前 と 値 の 組 み 合 わせはすべて、 同 じファイルに 表 示 されます。いったん 名 前 が 作 成 されると、$IO の 現 在 値 を 後 で 使 用 できるように 保 存 し、 出 力 デバイスを 指 定 されたログ・ファイルに 切 り 替 えます。OPEN コマンドに 使 用 するパラメータによって、そのファイルがなければ 作 成 するように 指 定 されています。timeout がゼロの 場 合 、Caché がファイルを 1 回 だけ 開 こうとします。もし 開 くことができなければ 失 敗 します。そのファイルがいったん 開 かれると、コードは 名 前 と 値 の 組 み 合 わせをループします。それぞれの 組 み 合 わせに 対 して、 呼 び 出 し 元 ルーチン 名 およびエントリ・ポイント 名 が 書 き 込 まれ、その 行 に 名 前 と 値 の 組 み 合 わせが続 きます ( 値 の 部 分 が 空 の 文 字 列 の 場 合 は、 名 前 のみが 書 き 込 まれます)。 組 み 合 わせは 1 行 に 1 個 ずつ 出力 されます。 読 みやすいように、 各 行 の 最 初 の 3 つの 値 は 一 列 に 並 ぶようになっています。すべての 組 み 合 わせが 出 力 された 後 、ログ・ファイルを 終 了 し、 先 ほど 保 存 した $IO の 値 がリストアされ、コントロールは 呼 び 出 し 元 に 返 されます。2.2.5.2 ^%ZSTARTこのルーチンは、 実 際 に Caché に 呼 び 出 されるエントリ・ポイントを 含 みます。 上 記 の ^%ZSSUtil の 機 能 も 使 用 します。すべてのエントリ・ポイントはほとんど 同 じように 動 作 し、 情 報 をログに 配 置 します。SYSTEM エントリ・ポイントは、 他 に 比べるとやや 複 雑 で、オペレータ・コンソール・ログに 情 報 を 配 置 します。%ZSTART ; User startup routine.#Define ME "ZSTART"#Define BgnSet "Start"#Define Empty ""; cannot be invoked directlyquitSYSTEM ;; Cache startingnew EntryPoint, Itemsset EntryPoint = "SYSTEM"; record the fact we got started in the console logdo WriteConsole^%ZSSUtil((EntryPoint_ "^%"_ $$$ME_ " called @ "_ $ZDATETIME($HOROLOG, 3))); log the data accumulate resultsset Items = $LISTBUILD($$$BgnSet, $ZDATETIME($HOROLOG, 3),"Job", $JOB,"Computer", $ZUTIL(110),"Version", $ZVERSION,"StdIO", $PRINCIPAL,"Namespace", $ZUTIL(5),"CurDirPath", $ZUTIL(12),"CurNSPath", $ZUTIL(12, ""),"CurDevName", $ZUTIL(67, 7, $JOB),"JobType", $ZUTIL(67, 10, $JOB),"JobStatus", $ZHEX($ZJOB),"StackFrames", $STACK,"AvailStorage", $STORAGE,"UserName", $ZUTIL(67, 11, $JOB))do WriteLog^%ZSSUtil($$$ME, EntryPoint, Items)quitLOGIN ;; a user logs into Cachenew EntryPoint, Itemsset EntryPoint = "LOGIN"set Items = $LISTBUILD($$$BgnSet, $ZDATETIME($HOROLOG, 3))do WriteLog^%ZSSUtil($$$ME, EntryPoint, Items)quit22 Caché 専 用 のシステム/ツールおよびユーティリティ


^%ZSTART ルーチンと ^%ZSTOP ルーチンによる 開 始 動 作 と 停 止 動 作 のカスタマイズJOB ;; JOB'd process beginsnew EntryPoint, Itemsset EntryPoint = "JOB"set Items = $LISTBUILD($$$BgnSet, $ZDATETIME($HOROLOG, 3))do WriteLog^%ZSSUtil($$$ME, EntryPoint, Items)quitCALLIN ;; a process enters via CALLIN interfacenew EntryPoint, Itemsset EntryPoint = "CALLIN"set Items = $LISTBUILD($$$BgnSet, $ZDATETIME($HOROLOG, 3))do WriteLog^%ZSSUtil($$$ME, EntryPoint, Items)quit各 ラベルの 説 明 を 以 下 に 示 します。^%ZSTARTこのルーチンはまず QUIT コマンドを 実 行 します。エントリ・ポイントの 1 つから 実 行 を 開 始 するのではなく、ルーチンとして 呼 び 出 す 方 が 良 好 な 結 果 を 得 ることができるためです。このルーチンも、そのルーチン 自 体 の 名 前 、 開 始 文 字 列 および 空 文 字 列 に 対 し、 指 定 された 定 数 (マクロとして) を 定 義 します。SYSTEM^%ZSTARTこのサブルーチンは、 呼 び 出 しルーチン 名 、エントリ・ポイント、 呼 び 出 された 日 付 時 刻 で 構 成 された 文 字 列 を作 成 します。その 後 、WriteConsole^%ZSSUtil を 呼 び 出 してオペレータのコンソール・ログに 配 置 します。その 後 、 表 示 する 名 前 と 値 の 組 み 合 わせのリストを 作 成 します。これを WriteLog^%ZSSUtil に 渡 し、ローカル・ログ・ファイルに 配 置 します。その 後 、 呼 び 出 し 元 に 戻 ります。LOGIN^%ZSTART、JOB^%ZSTART、および CALLIN^%ZSTARTこれらのサブルーチンは、オペレータのコンソール・ログに 情 報 を 置 きません。その 代 わり、 呼 び 出 す 際 に 識 別するための 簡 単 な 項 目 のリストを 作 成 し、WriteLog^%ZSSUtil を 使 用 して 記 録 します。2.2.5.3 ^%ZSTOPこのルーチンは、 実 際 に Caché に 呼 び 出 されるエントリ・ポイントを 含 み、^%ZSSUtil のサブルーチンを 使 用 します。この例 は、^%ZSTART の 例 と 似 ています。 詳 細 は、 前 のセクションを 参 照 してください。%ZSTOP ; User shutdown routine.#Define ME "ZSTOP"#Define EndSet "End"#Define Empty ""; cannot be invoked directlyquitSYSTEM ; Cache stoppingnew EntryPointset EntryPoint = "SYSTEM"; record termination in the console logdo WriteConsole^%ZSSUtil((EntryPoint_ "^%"_ $$$ME_ " called @ "_ $ZDATETIME($HOROLOG, 3))); write the standard log informationdo Logit(EntryPoint, $$$ME)quitLOGIN ; a user logs out of Cachenew EntryPointCaché 専 用 のシステム/ツールおよびユーティリティ 23


Caché システムのカスタマイズset EntryPoint = "LOGIN"do Logit(EntryPoint, $$$ME)quitJOB ; JOB'd process exits.new EntryPointset EntryPoint = "JOB"do Logit(EntryPoint, $$$ME)quitCALLIN ; process exits via CALLIN interface.new EntryPointset EntryPoint = "CALLIN"do Logit(EntryPoint, $$$ME)quitLogit(entrypoint, caller) PRIVATE ;; common logging for exitsnew itemsset items = $LISTBUILD($$$EndSet, $ZDATETIME($HOROLOG, 3))do WriteLog^%ZSSUtil(caller, entrypoint, items)quit2.3 ^%ZLANG ルーチンによる 言 語 の 拡 張注 釈( 正 確 ではありませんが) 慣 習 的 に、ルーチンは 名 前 の 一 部 にキャレットがあるかのように 参 照 されます。このドキュメントではこの 慣 習 に 従 いますが、ルーチンの 実 際 の 名 前 を 直 接 参 照 する 場 合 は 例 外 とします。^%ZLANG 機 能 を 使 用 すると、Caché ObjectScript などの 言 語 に、カスタムのコマンド、 関 数 、および 特 殊 変 数 を 追 加 することができます。 拡 張 機 能 は 標 準 機 能 と 同 じ 方 法 で 呼 び 出 され、 構 文 、 演 算 子 の 優 先 順 位 などに 関 する 同 一 の 規 則に 従 います。 通 常 、^%ZLANG 機 能 の 実 行 速 度 は 標 準 の Caché 機 能 ほど 速 くありません。パフォーマンスが 重 要 なルーチンをコーディングする 際 には、この 点 を 考 慮 してください。このような 拡 張 機 能 を 追 加 する 手 順 は 以 下 のとおりです。1. 必 要 に 応 じて、 以 下 の 名 前 でルーチンを 定 義 します。%ZLANGCnn%ZLANGFnn%ZLANGVnn%ZLANGCnn という 名 前 のルーチンではコマンドを 定 義 します。%ZLANGFnn という 名 前 のルーチンでは 関 数 を 定 義します。%ZLANGVnn という 名 前 のルーチンでは 特 殊 変 数 を 定 義 します。ルーチン 名 の nn 部 分 は、これらの 項 目 が利 用 できる 言 語 を 示 します。nn は、 以 下 のいずれかになります。• 00 — Caché ObjectScript• 01 — DSM-11• 02 — DTM• 05 — DSM/VSM (OpenVMS)• 06 — DSM-J• 07 — DTM-J• 08 — MSM• 09 — Caché Basic• 11 — MV Basic24 Caché 専 用 のシステム/ツールおよびユーティリティ


^%ZLANG ルーチンによる 言 語 の 拡 張2. これらのルーチンでは、パブリックのサブルーチンを 以 下 のように 定 義 します。• サブルーチンのラベルでは、 定 義 するコマンド、 関 数 、または 特 殊 変 数 の 名 前 を 使 用 します。名 前 は 英 文 字 の Z で 始 まる 必 要 があり、 英 字 のみを 含 めることができます。ロケールでアルファベットとして 定義 すれば、Unicode 文 字 が 使 用 できます。 英 文 字 はすべて 大 文 字 にする 必 要 がありますが、 実 行 の 際 は 大 文字 と 小 文 字 の 区 別 はありません。 名 前 の 最 大 長 は 31 文 字 です。名 前 は 既 存 のコマンド、 関 数 、または 特 殊 変 数 と 同 じにすることはできません ( 同 一 の 場 合 、Caché では 無 視 されます)。SQL 予 約 語 は 使 用 しないことを 強 くお 勧 めします。関 数 を 定 義 する 場 合 、 関 数 に 引 数 がない 場 合 でも、ラベルには 括 弧 を 含 める 必 要 があります。特 殊 変 数 のラベルには 括 弧 を 含 めることができます。• オプションで 別 のラベルを 含 めて、 略 称 を 定 義 します。その 略 称 が Caché で 使 用 されていないように 注 意 してください。• サブルーチンを 適 切 に 定 義 します。 詳 細 は、“メモ” セクションを 参 照 してください。3. 親 ルーチンにある 最 初 のコマンドでは QUIT を 使 用 することをお 勧 めします。こうしておけば、ユーザがルーチンを直 接 呼 び 出 しても、 何 も 起 こりません。また、ルーチンでコメントを 上 部 に 記 載 して、ルーチン 自 体 の 名 前 を 示 すようにすると 便 利 です。注 意他 のサブルーチンの 場 合 、パブリックのサブルーチンで 呼 び 出 されるものを 含 めて、それらのラベルは必 ず、 小 文 字 のみか 大 文 字 と 小 文 字 を 混 在 して 記 述 します ( 先 頭 は Z にしない)。または、プライベートのサブルーチンとして 実 装 します。つまり、^%ZLANG ルーチンによって 言 語 が 拡 張 されるので、 目 的 のサブルーチンのみが 外 部 で 利 用 できるようにすることが 重 要 です。2.3.1 メモコマンドは、ルーチンやプロシージャの DO のように 処 理 されます。 引 数 は、 呼 び 出 しのパラメータとして 渡 されます。コードの 結 果 にする 場 合 を 除 いて、$TEST や $ZREFERENCE など、システム 状 態 の 値 をコードで 保 持 する 必 要 があります (ただし、 関 数 や 特 殊 変 数 の 場 合 、システムでは $TEST が 自 動 的 に 保 持 されます)。特 殊 変 数 の 値 を 設 定 できます。 変 数 のエントリ・ポイントは 1 つのみです。 値 を 設 定 するか 値 を 取 得 するかを 判 断 するには、 引 数 が 指 定 されているかどうかをコードで 調 べる 必 要 があります。 以 下 はその 例 です。ZVAR(NewValue) public {if $DATA(NewValue) Set ^||MyVar=NewValue QuitQuit $GET(^||MyVar)}そうすると、 以 下 に 示 すように、ユーザはこの 変 数 を 設 定 するか、または 変 数 を 取 得 できます。SAMPLES>w $ZVARSAMPLES>s $ZVAR="xyz"SAMPLES>w $ZVARxyzコマンドまたは 関 数 からエラー・コードを 返 すには、$SYSTEM.Process.ThrowError() を 使 用 します。2.3.2 例例 えば、カスタムの 特 殊 変 数 を 定 義 して Caché ObjectScript で 使 用 するには、 以 下 のようにして、^%ZLANGV00 ルーチンを 定 義 します。Caché 専 用 のシステム/ツールおよびユーティリティ 25


Caché システムのカスタマイズ; implementation of ^%ZLANGV00; custom special variables for ObjectScriptQUITZVERNUM; tag becomes name of a special variableZVEQUIT $PIECE($ZVERSION,"(Build")次 に、デモンストレーションとして、 新 規 の 変 数 はターミナルで 以 下 のように 使 用 できます。SAMPLES>w $zvernumCache for Windows (x86-32) 2011.1SAMPLES>w $zveCache for Windows (x86-32) 2011.1別 の 例 として、 以 下 のように ^%ZLANGF00 ルーチンを 定 義 するとします。; implementation of ^%ZLANGF00; custom functions for ObjectScriptQUITZCUBE(input) public {Quit input*input*input}次 に、デモンストレーションとして、 新 規 の 関 数 はターミナルで 以 下 のように 使 用 できます。SAMPLES>w $zcube(2)8以 下 の 例 では ^%ZLANGC00 を 示 します。この 例 では、システム・ステータス・ユーティリティ ^%SS を 実 行 するコマンドが作 成 されます。; %ZLANGC00; custom commands for ObjectScriptQUITZSSDO ^%SSQUIT; tag name of a command to check system status26 Caché 専 用 のシステム/ツールおよびユーティリティ


3Caché のリモート 管 理ターミナルや 外 部 プログラムから Caché を 管 理 するためのルーチンとユーティリティです。• グローバルの 高 速 コピーのための ^GBLOCKCOPY の 使 用 法 — データベース 間 でグローバルのコピーを 高 速 に行 うルーチンについて 説 明 します。このルーチンは、アップグレード 中 にデータベースの 変 換 に 使 用 できます。• スイッチの 使 用 法 — インスタンス 単 位 のフラグで、さまざまな 目 的 に 使 用 できる Caché スイッチについて 説 明 します。 特 に、バックアップの 実 行 中 やクラッシュしたシステムの 回 復 中 に、 各 種 システム・プロセスを 抑 制 する 際 に 便 利です。• Windows クライアントからの Caché の 制 御 — Caché の 状 態 を 検 証 し Caché の 呼 び 出 しを 実 行 できる Windows クライアントとして、プログラムが 機 能 できるようにする DLL について 説 明 します。• 文 字 ベースの 管 理 ルーチン — 便 利 なターミナル・ルーチンを 2 つ 説 明 します。^SHADOW では、 別 の Caché インスタンスのシャドウ・システムの 定 義 と 管 理 ができます。^LEGACYNETWORK では、COM ポートのリスト、 追 加 、 編集 、および 削 除 ができます。3.1 グローバルの 高 速 コピーのための ^GBLOCKCOPY の 使 用法^GBLOCKCOPY は、データベース 間 でグローバルのコピーを 高 速 に 行 う Caché ルーチンです。これはターミナルと 対話 形 式 で 実 行 するか、バックグラウンドのジョブとして 1 つ 以 上 のグローバルをコピーするバッチに 構 成 されます。^GBLOCKCOPY には 組 み 込 みのモニタと、グローバル・コピーの 複 数 の 進 行 を 記 録 するための 複 数 のリポートが 含 まれます。システム 障 害 が 発 生 した 場 合 、^GBLOCKCOPY は 中 断 した 後 に 再 開 します。このセクションでは、 以 下 の 項 目 について 説 明 します。• ^GBLOCKCOPY の 使 用• ^GBLOCKCOPY の 実 行• ^GBLOCKCOPY を 使 用 したアップグレード・タスク注 釈^GBLOCKCOPY は、 実 際 に 変 更 されていない 場 合 にグローバルのコピーでのみ 使 用 する 必 要 があります。データベース・ブロックのコピー 中 はロックも 整 合 性 もチェックされないからです。Set や Kill の 処 理 は、コピー先 のグローバル、データベース、またはネームスペースにおいてだけでなく、コピー 実 行 中 のコピー 元 データベースにおいて 他 のグローバルに 対 して 実 行 でき、コピーに 影 響 を 与 えることもありませんが、 別 のデータベースやネームスペースにコピーされているコピー 元 グローバルで、Set や Kill を 行 うと、コピー 先 のグローバルは予 測 できなくなります。Caché 専 用 のシステム/ツールおよびユーティリティ 27


Caché のリモート 管 理^GBLOCKCOPY がグローバルを 新 規 のデータベースにコピーするとき、 保 護 、ジャーナル 属 性 、 照 合 タイプ、およびKeep 属 性 を 含 むソース・グローバルの 同 じプロパティを 持 つグローバルをそこに 作 成 します。 唯 一 の 例 外 は、グローバルが 以 下 の 照 合 の 1 つを 持 つ 場 合 です。• ISM Pre-6.2• ISM 6.2->6.4• Ipsum/Cobra• Ipsum/Cobra-2上 記 の 場 合 、ルーチンは 自 動 的 に 照 合 を Caché 標 準 に 変 更 します。注 釈最 近 のリリースの Caché では、SYS.Database.Copy() クラス・メソッドは、^GBLOCKCOPY と 類 似 する 機 能 を 提供 します。3.1.1 ^GBLOCKCOPY の 使 用^GBLOCKCOPY は、 以 下 のように 異 なる 複 数 の 演 算 で 使 用 されます。• データベースから 他 のデータベース、またはネームスペースに 1 つ 以 上 のグローバルをコピーします。 — コピー 先のデータベースまたはネームスペースにコピーするグローバルを 1 つ 以 上 選 択 できます。グローバルがコピー 先 のデータベースに 既 に 存 在 する 場 合 、ソース・グローバルのデータは 既 存 のデータに 結 合 されます。• 2 KB データベースを、8 KB データベースに 変 換 します。 — ユーザは、[Auto Create Batch] オプションを 使 用 して、2 KB から 8 KB へのバッチ 変 換 を 設 定 できます。あるいは、 容 量 と 時 間 が 許 す 限 り、 一 度 に 1 つずつ 変 換 することもできます。• マルチ・ボリュームのデータベースをシングル・ボリュームに 結 合 します。 — (UNIX® プラットフォームで 一 般 的 な)複 数 の 2 GB ボリュームを 持 つデータベースがある 場 合 、このデータベースのすべてのグローバルを 選 択 し、それをシングル・ボリュームにコピーすることができます。データベースは 現 在 2 GB を 超 過 できるため、これは 複 数 のデータベースを 1 つに 統 合 するのに 便 利 なメソッドです。• 添 え 字 レベル・マッピングを 使 用 して、1 つのデータベースからのグローバルを 複 数 のデータベースに 分 割 します。— グローバルの 添 え 字 レベル・マッピング (SLM) でネームスペースを 設 定 することで、データベースのグローバルを新 規 のネームスペースにコピーすることができます。これにより、SLM を 構 築 するデータベース 間 でグローバルを 分割 することができます。• 複 数 のデータベース 内 の 添 え 字 マップされたグローバルを、1 つのデータベースに 移 動 します。 — グローバル 全 体を 含 む 新 規 のデータベースを 作 成 します。 次 に、 異 なるすべての SLM データベースから 新 規 のデータベースにコピーするバッチで、 複 数 のコピーを 設 定 します。データベースは 現 在 、2 GB を 超 過 できるため、これは 複 数 のデータベースを 1 つに 統 合 するのに 便 利 なメソッドです。• データベースのコピーを 作 成 します。すべてのグローバルを 別 のディレクトリにコピーすることによって、データベースをそのディレクトリにコピーできます。• ECP を 通 じて 他 のマシンにグローバルをコピーします。 — ^GBLOCKCOPY は、ECP ネットワーク 接 続 上 の 他 のマシンへのグローバルのコピーをサポートします。リモート・マシンに 対 する ECP 接 続 、およびそれを 示 すネームスペース・マッピングを 設 定 する 必 要 があります。 次 に、“Copy from Database to Namespace” オプションを 選 択 し、コピー 先 としてリモート・ネームスペースを 選 択 します。• データベースの 未 使 用 スペースを 再 要 求 します。 大 規 模 なグローバルがデータベース 内 で 作 成 されて 削 除 された場 合 、データベースには 未 使 用 の 余 分 なスペースがあることがあります。データベースのすべてのグローバルを 新規 のデータベースにコピーし、 古 いデータベースを 新 しいもので 置 換 すると、このスペースを 削 除 できます。• データベース 内 のポインタを 再 編 成 します。データベースがブロックの 分 割 により 断 片 化 された 場 合 、そのデータベース 内 のデータを 再 編 成 すると 高 速 なパフォーマンスを 得 ることができます。これには、データベース 内 のすべてのグローバルを 新 規 のデータベースにコピーし、 古 いデータベースを 新 規 のデータベースに 置 換 します。28 Caché 専 用 のシステム/ツールおよびユーティリティ


グローバルの 高 速 コピーのための ^GBLOCKCOPY の 使 用 法• グローバルの 照 合 を 変 更 します。 — ソース・グローバルが 以 下 の 照 合 タイプの 1 つの 場 合 に 行 われます。– ISM Pre-6.2– ISM 6.2->6.4– Ipsum/Cobra– Ipsum/Cobra-2^GBLOCKCOPY を 使 用 してコピーされた 場 合 、グローバルの 照 合 は、Caché 標 準 に 自 動 的 に 変 更 されます。照 合 のタイプを 変 更 したい ( 例 えば、Caché 標 準 から German1) グローバルが 既 に 存 在 している 場 合 、^GBLOCKCOPYを 実 行 する 前 に、 適 切 な 既 定 の 照 合 を 持 つコピー 先 のデータベースにグローバルを 作 成 します。注 釈ISM 5.10/6.4 から 移 行 されたデータベースには、ISM 照 合 を 持 つグローバルが 含 まれます。• OPENM.DAT データベースを CACHE.DAT データベースに 変 換 します。OpenM からアップグレードした 後 に、“AutoCreate Batch” オプションを 使 用 してこの 変 換 を 行 います。• ISM 5.10/6.4 MUMPS.DAT データベースを CACHE.DAT データベースに 変 換 します。ISM からアップグレードした後 に、“Auto Create Batch” オプションを 使 用 してこの 変 換 を 行 います。• 古 いデータベースを CACHE.DAT データベース、またはネームスペースにインポートします。CACHE.DAT データベースやネームスペースにインポートしたい 古 いデータベース・ファイルがある 場 合 は、コピー 時 にそのファイルが存 在 するディレクトリをソース・ディレクトリとして 選 択 します。データベースは CACHE.DAT という 名 前 に 変 更 され、データをコピー 先 のデータベースやネームスペースにコピーすることができるようになります。• ISM 5.10/6.4 MUMPS.DAT データベースを CACHE.DAT データベース、またはネームスペースにインポートします。CACHE.DAT データベースやネームスペースにインポートしたい MUMPS.DAT ファイルがある 場 合 、コピー 時にそのファイルが 存 在 するディレクトリをソース・ディレクトリとして 選 択 します。データベースは CACHE.DAT という 名前 に 変 更 され、データをコピー 先 のデータベースやネームスペースにコピーすることができるようになります。3.1.2 ^GBLOCKCOPY の 実 行^GBLOCKCOPY を 実 行 する 前 (またはアップグレードを 実 行 する 前 ) に、ご 使 用 のデータベースのオペレーティング・システムの 完 全 なバックアップを 作 成 し、データベースに 破 損 がないことを 確 実 にするために 整 合 性 チェックを 実 行 します。注 釈^GBLOCKCOPY の 実 行 を 高 速 にするため、 一 時 データやスクラッチ・データ、および 不 必 要 な 古 いデータはすべて 削 除 します。ISM のアップグレードには、アップグレードの 前 に 削 除 してください。Caché を 2 KB から 8KB に 変 換 する 場 合 は、^GBLOCKCOPY を 実 行 する 前 に 削 除 してください。^GBLOCKCOPY のバッチ 機 能 を 使 用 して、 同 時 に 実 行 するために 変 換 バッチを 設 定 することができます。“Auto Createa Batch” オプションを 選 択 します。このオプションは、システム 上 のデータベースのリストに 対 して ^SYS("UCI") グローバルを 調 査 します。2 KB サイズを 使 用 しているデータベースが 検 出 された 場 合 、 変 換 バッチにオプションが 追 加 されます。 変 換 バッチが 一 度 設 定 されると、バッチを 実 行 するオプションを 選 択 することができます。 変 換 バッチが 実 行 されている 間 、Monitor、または Batch Report を 使 用 して 進 行 状 況 を 監 視 することができます。注 釈データベースを ^GBLOCKCOPY で 変 換 している 間 は、データベースへアクセスしないようにしてください。^GBLOCKCOPY の 実 行 中 にアクセスすると、 結 果 は 予 測 不 可 能 になります。 同 じシステム 上 で、^GBLOCKCOPYで 変 換 しないデータベースは、 安 全 に 使 用 することができます。以 下 は、“Auto Create a Batch” オプションを 使 用 する 例 です。%SYS>d ^GBLOCKCOPYThis routine will do a fast global copy from a database to another database orto a namespace. If a namespace is the destination, the global will follow anymappings set up for the namespace.Caché 専 用 のシステム/ツールおよびユーティリティ 29


Caché のリモート 管 理1) Interactive copy2) Batch copy3) ExitOption? 21) Manage Batches2) Run a Batch3) Restart a Batch4) Add Processes to a running Batch5) Stop a Running batch6) Monitor Running Batch7) Batch Report8) ExitOption? 11) Create a Batch2) Edit a Batch3) List Batches4) Delete a Batch5) Auto create a Batch6) ExitOption? 51) Convert 2K DB to 8K DB2) Convert OPENM/ISM DB3) Both4) ExitOption? 1Batch name to auto create? CVT2KDetected 2K c:\temp\a\CACHE.DAT, convert to 8K CACHE.DAT? Yes => YesDetected 2K c:\temp\x\CACHE.DAT, convert to 8K CACHE.DAT? Yes => YesDetected 2K c:\temp\z\CACHE.DAT, convert to 8K CACHE.DAT? Yes => NoAuto creating the following database conversions:Convert 2K c:\temp\a\CACHE.DAT => 8K c:\temp\a\CACHE.DATConvert 2K c:\temp\x\CACHE.DAT => 8K c:\temp\x\CACHE.DATConfirm auto creation of batch CVT2K? No => yesDatabase c:\temp\a\CACHE.DAT renamed to c:\temp\a\old\CACHE.DATDatabase c:\temp\x\CACHE.DAT renamed to c:\temp\x\old\CACHE.DATBatch Name: CVT2K 0 of 0 Processes running, 0 per directory# Source DB=>Destination DB/NS Last Update Done/ToDo/Err State-- ---------------------------- ----------- ------------- -----1 c:\temp\a\old\=>c:\temp\a\ 0/ 15/ 0 Queue2 c:\temp\x\old\=>c:\temp\x\ 0/ 15/ 0 QueueAuto creation of batch CVT2K complete1) Convert 2K DB to 8K DB2) Convert OPENM/ISM DB3) Both4) ExitOption? 41) Create a Batch2) Edit a Batch3) List Batches4) Delete a Batch5) Auto create a Batch6) ExitOption? 61) Manage Batches2) Run a Batch3) Restart a Batch4) Add Processes to a running Batch5) Stop a Running batch6) Monitor Running Batch7) Batch Report8) ExitOption? 230 Caché 専 用 のシステム/ツールおよびユーティリティ


グローバルの 高 速 コピーのための ^GBLOCKCOPY の 使 用 法Batch name to run? ?Name # Source DB=>Destination DB/NS Globals Status---- - ---------------------------- ------- ------CVT2K 1 c:\temp\a\old\=>c:\temp\a\ All Queue2 c:\temp\x\old\=>c:\temp\x\ All QueueBatch name to run? CVT2KHow many copy processes do you want to run at once? 2 =>How many of these copy processes do you want to run for each directory? 1 =>Confirm copy? Yes =>3.1.3 ^GBLOCKCOPY を 使 用 したアップグレード・タスク^GBLOCKCOPY ルーチンを 使 用 して、アップグレードに 関 連 する 複 数 のタスクを 実 行 できます。 以 下 はその 説 明 です。• ^GBLOCKCOPY を 使 用 してデータベースを 変 換 する• マネージャ・データベースの 変 換• %SYS.SYSCONV と ^GBLOCKCOPY の 相 違 点^GBLOCKCOPY を 使 用 してデータベースを 変 換 するCaché をアップグレードした 後 、^GBLOCKCOPY ルーチンを 使 用 して 以 下 の 処 理 を 実 行 します。• ISM 5.10 および 6.4 MUMPS.DAT データベースを、%SYS.SYSCONV ルーチンを 使 用 せずに CACHE.DAT データベースに 変 換 します。• %SYS.SYSCONV ルーチンを 使 用 する 代 わりに、 他 の 古 いデータベースを CACHE.DAT データベースに 変 換 します。• 2 KB データベースを 8 KB データベースに 変 換 します。注 釈さらにパフォーマンスを 向 上 させるため、 既 存 の 2 KB データベースを 8 KB データベースに 変 換 することをお勧 めします。これは、アップグレード 時 でも、 後 からでも 実 行 することができます。データベースは、データベースの 停 止 時 間 やディスクの 空 き 容 量 にしたがって、 一 度 に 1 つ、あるいは 複 数 変 換 することができます。マネージャ・データベースの 変 換古 いバージョンの Caché からアップグレードした 後 も、マネージャ・データベースは 2 KB サイズのままです。^GBLOCKCOPY を 使 用 して、 以 下 のようにこれを 8 KB に 変 換 することができます。1. システムに 接 続 中 のユーザがいないことを 確 認 します。2. ^GBLOCKCOPY を 実 行 して、マネージャ・データベースを 別 のディレクトリにコピーします。3. Caché を 終 了 します。4. 新 しく 作 成 されたデータベースをマネージャ・ディレクトリにコピーします。5. Caché を 再 起 動 します。以 下 に 例 を 示 します。%SYS>d ^GBLOCKCOPYThis routine will do a fast global copy from a database to another database orto a namespace. If a namespace is the destination, the global will follow anymappings set up for the namespace.1) Interactive copy2) Batch copy3) ExitOption? 1Caché 専 用 のシステム/ツールおよびユーティリティ 31


Caché のリモート 管 理1) Copy from Database to Database2) Copy from Database to Namespace3) ExitOption? 1Source Directory for Copy (? for List)? c:\cachesys\mgrDestination Directory for Copy (? for List)? c:\temp\mgrDatabase c:\temp\mgr\ does not existDo you want to create it? No => YesDatabase c:\temp\mgr\ createdAll Globals? No => Yes39 items selected from39 available globalsTurn journaling off for this copy? Yes => YesConfirm copy? Yes => Yes%SYS.SYSCONV と ^GBLOCKCOPY の 相 違 点%SYS.SYSCONV ルーチンは MUMPS.DAT データベースの 名 前 を CACHE.DAT に 変 換 し、ルーチン・ソースとオブジェクト・コードを 保 存 するグローバルの 変 換 をその 場 で 実 行 し ( 余 分 なディスク 容 量 は 必 要 としません)、ルーチンをリコンパイルします。データベースは 2 KB サイズのままです。%SYS.SYSCONV ルーチンは、ISM 5.10/6.4 のアップグレードのみに 使 用 します。これは、 余 分 のディスク 容 量 を 使 用 しないで、 一 度 に 1 ノード 分 のデータのみ 移 動 するため、 低 速 で実 行 します。^GBLOCKCOPY ルーチンは、 元 のデータベースの 完 全 なコピーを 作 成 するときに、 余 分 のディスク 容 量 を 必 要 とします。ルーチンの 実 行 中 に 情 報 を 入 力 して、 元 のデータベースの 名 前 を 従 来 のサブ・ディレクトリ 内 で CACHE.DAT に 変更 します。 新 規 の 8 KB データベースがデータベース・ディレクトリに 作 成 され、 従 来 のディレクトリから 新 しいデータベースにデータがコピーされます。 変 換 後 、 変 換 したデータが 認 証 されると、 従 来 のデータベースを 削 除 することができます。^GBLOCKCOPY ルーチンは、 同 じディスク 容 量 での 実 行 を 制 約 されておらず、 一 度 にブロック 全 体 のデータを 移 動 するので、すばやく 動 作 します。しかし、(%SYS.SYSCONV が 行 うように) ルーチンやオブジェクト・コードだけを 移 動 するのではなく、データベース 内 のすべてのデータを 移 動 するので、データベースのサイズによっては %SYS.SYSCONV よりも時 間 がかかってしまうこともあります。注 釈データベースが 2 KB から 8 KB へ 変 換 されたので、 管 理 ポータルの [システム] > [ 構 成 ] > [メモリと 開 始 設定 ] ページで、2 KB データベース・キャッシュに 割 り 当 てられている MB 数 を 8 KB データベース・キャッシュに 変 更 します。3.2 スイッチの 使 用 法Caché スイッチは、インスタンス 単 位 のフラグで、さまざまな 目 的 に 使 用 できます。 特 に、バックアップの 実 行 中 やクラッシュしたシステムの 回 復 中 に、 各 種 システム・プロセスを 抑 制 する 際 に 便 利 です。^SWSET ルーチンを 使 用 して、スイッチの 値 を 直 接 操 作 できます。背 景Caché のスイッチの 起 源 はマシンとの 物 理 的 な 接 点 にあり、かつてはコンピュータのオペレータ・コンソールの 一 部 として使 用 されたり、マイクロコンピュータのフロント・パネルに 装 備 されていました。オペレータは、これらのスイッチの 1 つを設 定 することで、そのマシンで 実 行 中 のプログラムに 1 ビットの 情 報 を 送 信 できました。Caché では “ 仮 想 マシン” が 実装 されるため、マシンに 対 するスイッチの 概 念 も 同 様 に 抽 象 化 されています。今 日 、Caché におけるスイッチとは、すべての Caché プロセスから 見 える、Caché インスタンスの 共 有 または 共 通 メモリの個 々のビット 設 定 のことをいいます。 一 部 のスイッチはユーザに 対 して 設 定 されますが、その 大 半 は Caché 自 体 のオペレーションに 影 響 を 与 えます。注 釈ユーザはスイッチを Caché インスタンスに 対 してローカルに 使 用 する 必 要 があります。Caché 自 体 には 特 定 の設 定 をクラスタや ECP 構 成 の 他 のメンバに 伝 播 する 機 能 がありますが、これらの 機 能 はインターシステムズの内 部 使 用 にのみ 制 限 されています。ユーザ・スイッチの 値 は、 他 のシステムに 送 信 することはできません。32 Caché 専 用 のシステム/ツールおよびユーティリティ


スイッチの 使 用 法3.2.1 現 在 定 義 されているスイッチスイッチは、すべて 番 号 によって 識 別 されます。Caché の 起 動 時 、スイッチはゼロ (オフ) に 初 期 化 されます。 次 のテーブルは、スイッチの 番 号 とその 動 作 を 示 しています。スイッチ0 — 7891011121314151617181920 — 31注 意意 味 / 使 用 法アプリケーション・プログラムで 使 用 する 目 的 で 予 約 されています。既 存 の Caché デーモンによるネットワーク 要 求 に 対 する 応 答 を 抑 制 します。ネットワーク・ログインを 処 理 する 新 しいデーモンの 作 成 を 抑 制 します。このスイッチを 設 定 するプロセス 以 外 によるすべてのグローバル・アクセスを 抑 制 します。また、このプロセスを 除 き、ディスク 入 出 力 の 原 因 となるルーチン・アクセスを 抑 制 します。このスイッチを 設 定 するシステム・ジョブ 以 外 によるすべてのグローバル・アクセスを 抑 制 します。この 設 定 はスイッチ 10 に 優 先 し、システム 用 に 予 約 されています。 例 えば、このスイッチは、コピー 操 作 の 前 にシステムの 動 作 を 停 止 する 目 的 でバックアップ・プロセスによって 設 定 されます。Caché へのログインを 抑 制 します。ユーザがログインを 試 みると、"Sign-on and JOB inhibited:Switch 12 is set" というメッセージが 表 示 されます。すべてのグローバル SET、KILL、および ZSAVE コマンドを 抑 制 し、グローバルとルーチンに対 して 読 み 取 りアクセスのみを 許 可 します。すべてのグローバルおよびすべてのルーチンに 対 するすべてのアクセスを 抑 制 します。通 常 はスイッチ 10、13、または 14 によってアクセスが 抑 制 される 場 合 でも、ピアからのネットワーク 参 照 を 許 可 します。シャットダウン 操 作 を 調 整 する 目 的 で、Caché によって 内 部 的 に 使 用 されます。クラスタでのジャーナル・フラッシュの 完 了 待 機 を 回 避 します。ブロックに 対 するキューが 非 常 に 長 くなる 場 合 は、 追 加 プロセスの 休 止 を 抑 制 します。新 規 トランザクションの 開 始 を 抑 制 します。未 定 義 で、インターシステムズ 用 に 予 約 されています。インターシステムズの 担 当 者 またはドキュメントに 記 載 されている 手 順 によって 具 体 的 に 指 示 される 場 合を 除 き、アプリケーションで 使 用 するスイッチは、アプリケーション・プログラム 用 に 予 約 されているスイッチ (スイッチ 0–7) に 限 定 する 必 要 があります。3.2.2 スイッチの 操 作 法^SWSET ルーチンを 使 用 して、スイッチの 値 を 直 接 操 作 できます。また、クラスタ・システム 上 でのジャーナル 操 作 やシステム・バックアップを 行 う 機 能 など、 他 の Caché 機 能 でも 呼 び 出 し 元 に 代 わってスイッチの 値 を 設 定 できます。Caché 専 用 のシステム/ツールおよびユーティリティ 33


Caché のリモート 管 理3.2.2.1 SWSET ルーチンこのルーチンは、ターミナル・セッションなどからスイッチの 値 をインタラクティブに 設 定 する 方 法 を 提 供 します。SWSETパラメータ備 考例なしこの 後 の 例 に 示 す 方 法 でこのルーチンを 呼 び 出 すと、スイッチ 番 号 とそのスイッチに 設 定 する 値 (0 または 1)の 入 力 を 求 められます。以 下 の 例 は、SWSET の 使 用 法 を 示 しています。 実 行 すると、DO ^SWSET以 下 のような 内 容 が 順 次 表 示 されます。Set/Clear switch #:Set/Clear switch #: 2Set/Clear switch #: 2 to value (0 or 1):Set/Clear switch #: 2 to value (0 or 1): 1Set/Clear switch #: 2 to value (0 or 1): 1...done3.2.2.2 %swstat^SWSET 関 数この 関 数 は、スイッチの 現 在 の 設 定 を 返 します。%swstat^SWSET(switch)パラメータ• switch — スイッチの 番 号 。備 考switch が 有 効 な 番 号 の 場 合 、この 関 数 はスイッチの 値 を 次 のどちらかとして 返 します。• 0 — スイッチはリセットされています (オフ)。• 1 — スイッチは 設 定 されています (オン)。それ 以 外 の 場 合 は、エラーが 発 生 したことを 示 す 値 の –1 を 返 します。例以 下 の 例 は、スイッチ 番 号 1 の 値 を 出 力 します。Write $$%swstat^SWSET(1)34 Caché 専 用 のシステム/ツールおよびユーティリティ


Windows クライアントからの Caché の 制 御3.2.2.3 %swset^SWSET 関 数この 関 数 は、スイッチを 指 定 された 値 に 設 定 します。%swset^SWSET(switch, value)パラメータ• switch — スイッチの 番 号 。• value — 設 定 する 値 (0 または 1)。備 考例switch が 有 効 な 番 号 で value が 0 または 1 の 場 合 、この 関 数 はスイッチを 指 定 された 値 に 設 定 し、 次 を 返 します。• 0 — スイッチはリセットされました (オフ)。• 1 — スイッチは 設 定 されました (オン)。それ 以 外 の 場 合 は、エラーが 発 生 したことを 示 す 値 の –1 を 返 します。以 下 の 例 は、スイッチ 番 号 1 の 値 をオフに 設 定 します。Write $$%swset^SWSET(1, 0)3.2.3 失 敗 モードCaché プロセスがシステム 予 約 のいずれかのスイッチを 設 定 し、その 処 理 を 適 切 にクリーンアップせずに 終 了 した 場 合 、システムが 制 限 されたオペレーティング・モードのままになる 場 合 があります。 例 えば、あるプロセスでスイッチ 12 を 設 定した 後 に 重 大 な 障 害 (あるいは 単 純 な 停 止 ) が 発 生 した 場 合 、Caché は 以 降 のユーザがログインできない 状 態 になります。この 問 題 が 生 じた 場 合 は、インターシステムズのサポート 窓 口 (WRC) までお 問 い 合 わせください。注 釈Caché では、スイッチ 10 に 対 してのみ 自 動 リカバリが 実 装 されています。プロセスがスイッチ 10 を 設 定 後 に 停止 した 場 合 、Caché は 自 動 的 にこのスイッチをゼロにリセットします。3.3 Windows クライアントからの Caché の 制 御このセクションでは、Caché の 状 態 を 検 証 する DLL の 使 用 方 法 を 説 明 し、Windows クライアントから Caché の 呼 び 出 しを 実 行 します。Caché は、Caché 構 成 を 制 御 し、Caché プロセスを 開 始 する Windows クライアント・プログラムのメカニズムを 提 供 します。これにより、 標 準 Caché ツールを 使 用 せずに、 正 確 な 構 成 情 報 で Caché プロセスを 自 動 的 に 開 始 するアプリケーションを 配 布 できます。このツールにより、 以 下 が 可 能 になります。• 指 定 された 構 成 名 の Caché ディレクトリ・パスとサービス 名 を 検 索• Caché システムの 状 態 を 取 得• Caché 構 成 を 直 接 、あるいは Caché コントロール・サービスから 制 御 。これは、 実 行 中 の Windows バージョンに 依存 します。Caché 専 用 のシステム/ツールおよびユーティリティ 35


Caché のリモート 管 理• 適 切 な 設 定 で Caché プロセスを 開 始Caché は、C、C++、Visual Basic のサンプル・プログラムを 提 供 しています。そのプログラムは、cctrl.dll の 動 的 なロード方 法 、また、 構 成 を 開 始 、 停 止 、 強 制 終 了 し、Caché プロセスを 開 始 する 関 数 の 使 用 方 法 を 示 しています。これらのサンプルは、Caché をインストールした 場 所 の Dev/cache サブディレクトリにあります。• cctrlcpp — C++ コード・サンプル• cctrlvb — Visual Basic コード・サンプル• ctrldemo — C コード・サンプル3.3.1 CctrlGetDirs指 定 された 構 成 名 に 対 して、 構 成 ・バイナリ・マネージャー、それぞれのディレクトリ・パスと、サービス 名 を 検 索 します。構 文CctrlGetDirs(char *config, CCTRL_DIR_INFO *dirinfo)configdirinfo要 求 される 構 成 名ディレクトリ 情 報 が 格 納 される C 構 造 へのポインタ返 り 値エラー 時 に (char *0) 返 します。3.3.2 CctrlConfigStatusCaché 構 成 の 状 態 を 返 します。構 文CctrlConfigStatus(char* config)config要 求 される 構 成 名返 り 値以 下 の 0 から 4 までの 値 を 返 します。01234構 成 は 起 動 され、 実 行 中 です。構 成 は、 開 始 あるいは 終 了 中 です。構 成 の 開 始 あるいはシャット・ダウンがアボートされました。構 成 はダウンしました。ERROR3.3.3 CctrlControlWindows NT の Caché コントロール・サービスを 経 由 して、あるいは Windows 95/98 で 直 接 Caché 構 成 を 制 御 します。36 Caché 専 用 のシステム/ツールおよびユーティリティ


Windows クライアントからの Caché の 制 御構 文CctrlControl(char *command, char *config)command以 下 のコマンドのいずれか 1 つを 使 用 します。• start — 構 成 を 開 始• stop — 構 成 の 無 理 のないシャット・ダウン• stopnoshut — ユーザ 提 供 のシャット・ダウン・ルーチンを 実 行 せずに、 構 成 をシャット・ダウン• force — 構 成 の 強 制 終 了 。UNIX® システムの cforce と 同 じです。• stopstart — 無 理 のない 構 成 の 停 止 と、 素 早 い 再 起 動config要 求 される 構 成 名返 り 値CCTRL_SUCCESSCCTRL_ERRORCCTRL_INVALID_COMMANDCCTRL_INVALID_CONFIGURATIONCCTRL_CONTROL_STU_ERROR処 理 の 成 功汎 用 エラー無 効 なコマンド 引 数未 定 義 の 構 成^STU の 失 敗CctrlGetLastError は、エラーの 返 り 値 の 後 ろに、エラー 文 字 列 情 報 へのポインタを 返 します。3.3.4 CctrlRun指 示 された 構 成 とネームスペースで Caché プロセスを 開 始 し、 指 示 された 主 要 入 出 力 デバイスを 使 用 し、 指 示 されたルーチンを 呼 び 出 します。構 文CctrlRun(char *config, char *routine, char *namespace, char *IOtype)configroutineネームスペースIOtype実 行 中 の 構 成 名 です。開 始 するために 要 求 されるルーチン 名 です。要 求 されるネームスペース 名 です。cterminal あるいは none のいずれかの 値 を 持 つ 入 出 力 の 処 理 方 法 です。• cterminal — Caché プログラマ’のターミナル• none — 入 出 力 なし。プロセスは、NUL でバックグラウンドで 実 行 されます。$Principal で 使 用 されます。$Principal への 書 き 込 みは 破 棄 されます。$Principalからの 読 み 取 りはエラーになります。Caché 専 用 のシステム/ツールおよびユーティリティ 37


Caché のリモート 管 理返 り 値CCTRL_SUCCESSCCTRL_ERRORCCTRL_INVALID_COMMANDCCTRL_INVALID_CONFIGURATIONCCTRL_CONTROL_STU_ERROR処 理 の 成 功汎 用 エラー無 効 なコマンド 引 数未 定 義 の 構 成^STU の 失 敗注 釈 Windows NT では、 指 定 の 構 成 を 実 行 する 必 要 があります。 構 成 が 実 行 中 かどうかが 判 別 できない 場 合 、CctrlConfigStatus と CctrlControl を 使 用 してチェックし、 必 要 な 構 成 を 開 始 してください。これにより Cachéは、コントロール・サービスを 使 用 せずに 構 成 を 開 始 しないようにします。3.3.5 CctrlRunIO指 示 された 構 成 とネームスペースで Caché プロセスを 開 始 し、 指 示 された 主 要 入 出 力 デバイス・タイプを 使 用 し、 指 示 されたルーチンと、 入 出 力 デバイスおよびエラー・デバイス 用 の 追 加 の 入 出 力 仕 様 を 呼 び 出 します。構 文CctrlRunIO(char *config,char *routine,char *namespace,char *IOtype,HANDLE *hIO,char *cwd,char *options,HANDLE *child,DWORD *childPID))38 Caché 専 用 のシステム/ツールおよびユーティリティ


文 字 ベースの 管 理 ルーチンconfigroutineネームスペースIOtype実 行 中 の 構 成 名 で、すべて 大 文 字 です。開 始 するために 要 求 されるルーチン 名 です。要 求 されるネームスペース 名 です。cterminal あるいは none のいずれかの 値 を 持 つ TCP の 処 理 方 法 です。• TCP — TCP ソケット• cterminal — Caché プログラマ’のターミナル• none — 入 出 力 なし。プロセスは、NUL でバックグラウンドで 実 行 されます。$Principal で 使 用 されます。$Principal への 書 き 込 みは 破 棄 されます。$Principal からの 読 み 取 りはエラーになります。hIOcwdoptionchildchildPID3 つの 配 列 は、Caché プロセスの 標 準 入 出 力 、エラー・デバイスとして 使 用 するために 処 理 します。子 プロセスの 作 業 中 のディレクトリ・パスです。ディレクトリ 引 数 が 0 の 場 合 、 現在 のプロセスの 作 業 ディレクトリを 使 用 します。追 加 の cache.exe コマンド 行 オプションが、 生 成 されたコマンド 行 に 追 加 されます。 例 えば、 大 規 模 プロセスのメモリ・サイズ (-b 1024) を 定 義 できます。子 プロセスへのハンドルが 返 される HANDLE タイプ 変 数 へのポインタです。ハンドルの 値 が 0 の 場 合 、 子 プロセスのハンドルは、この 関 数 によってクローズされます。生 成 された cache.exe プロセスの PID へのポインタです。この 引 数 は、 子 のPID が 要 求 されない 場 合 、ゼロになります。返 り 値CCTRL_SUCCESSCCTRL_ERRORCCTRL_INVALID_COMMANDCCTRL_INVALID_CONFIGURATIONCCTRL_CONTROL_STU_ERROR処 理 の 成 功汎 用 エラー無 効 なコマンド 引 数未 定 義 の 構 成^STU の 失 敗注 釈hIO 配 列 のハンドルは、 必 ず 継 承 できる 必 要 があります。DuplicateHandle を 使 用 して、 子 プロセスによるハンドルの 継 承 を 可 能 にします。Windows NT では、 指 定 の 構 成 を 実 行 する 必 要 があります。 構 成 が 実 行 中 かどうかが 判 別 できない 場 合 、CctrlConfigStatusと CctrlControl を 使 用 してチェックし、 必 要 な 構 成 を 開 始 してください。これにより Caché は、コントロール・サービスを使 用 せずに 構 成 を 開 始 しないようにします。3.4 文 字 ベースの 管 理 ルーチンCaché インストールの 管 理 方 法 として 優 先 的 に 推 奨 されるのは、 管 理 ポータルです。このポータルによって、システム 制御 に 使 用 する 便 利 なブラウザ・ベースのインタフェースが 提 供 されます。しかし、この 方 法 ではシステムを 管 理 できないCaché 専 用 のシステム/ツールおよびユーティリティ 39


Caché のリモート 管 理状 況 に 対 応 するために、Caché ターミナルから 重 要 な 機 能 をいくつか 実 行 できる 文 字 ベースのルーチンが Caché にいくつか 用 意 されています。このセクションで 説 明 するユーティリティは、 以 下 のとおりです。• ^SHADOW — 管 理 者 は 別 の Caché インスタンスのシャドウ・システムとして 機 能 する Caché インスタンスを 定 義 および 管 理 できます。• ^LEGACYNETWORK — 管 理 者 は COM ポートをリスト、 追 加 、 編 集 、および 削 除 できます。これらの 各 ルーチンについては、それぞれのセクションでその 最 上 位 レベルの 機 能 と 共 に 説 明 されています。ほとんどの 場 合 、 初 期 メニューを 選 択 すると、ルーチンのタスク 実 行 に 必 要 な 情 報 がすべて 指 定 されるまで、 必 要 な 情 報 の 入 力が 求 められます。Caché ターミナルからこれらのルーチンを 使 用 するには、ユーザは %SYS ネームスペースにあることと、最 低 でも %Manager ロールを 持 つことが 必 要 です。ルーチン ( 例 えば ^SHADOW) は、 次 のコマンドで 呼 び 出 されます。DO ^SHADOWルーチンが 実 行 されると、そのオプションのリストが 表 示 されます。 目 的 のオプションを 選 択 するには、“Option?” プロンプトの 後 に 対 応 する 番 号 を 入 力 します。注 意最 初 の 説 明 にあるように、Caché システムの 管 理 方 法 として 好 ましいのは、 管 理 ポータルです。このドキュメントに 説 明 されているルーチンを 使 用 する 場 合 は、 管 理 者 に Caché の 動 作 と、 選 択 するオプションに適 するパラメータ 値 についての 十 分 な 運 用 知 識 があることが 前 提 となります。プロンプトに 関 する 一 般 的 な 注 意 事 項文 字 ベースの 機 能 を 使 用 したときのプロンプトの 特 性 を 以 下 に 示 します。• 各 オプションには、 数 字 の 接 頭 語 があります。その 番 号 を 入 力 することで、オプションを 選 択 します。オプション 番 号の 形 式 は、すべてのルーチンで 使 用 されています。• すべてのオプション・リストに、メニューの 現 行 レベルを 終 了 して 前 のレベルに 戻 るための 項 目 があります。または、“Option?” プロンプトに 対 して Enter キーを 押 して 対 応 することもできます。この 操 作 は [ 終 了 ] オプションを 選 択 したと 同 義 に 解 釈 されます。つまり、 現 行 のセクションが 終 了 され、1 つ “ 上 位 ” レベルのオプションが 表 示 されます。最 上 位 レベルのオプションに 対 して Enter を 押 すと、^SHADOW ルーチンが 終 了 します。• 情 報 の 入 力 を 求 めるプロンプトの 多 くには 既 定 値 があり、それは Enter キーを 押 すことで 選 択 できます。 使 用 可 能な 既 定 値 がある 場 合 は、 次 に 示 すように、プロンプト・メッセージと “=>” 文 字 の 間 に 表 示 されます。Unsuccessful login attempts before locking user? 5 =>この 例 では、 既 定 値 は 5 で、これはユーザが 何 回 ログインに 失 敗 するとそのユーザ 名 がロックされるかを 表 しています。• 既 定 値 が “Yes” または “No” のプロンプトでは、“yE” や “n” などの 部 分 的 に 一 致 する 応 答 も 受 け 入 れられます。この 照 合 では、 応 答 の 大 文 字 / 小 文 字 が 無 視 されます。• 既 存 のユーザ、ロール、サービスなどの 設 定 変 更 が 目 的 のオプションでは、それらの 項 目 の 既 存 値 が 既 定 として 表示 されます。Enter キーを 押 すと、その 値 が 保 存 され、 次 のプロンプトに 進 みます。• 一 部 のプロンプトでは、ユーザ 名 などの 項 目 を 照 合 するときに 使 用 するパターンの 入 力 が 求 められます。 通 常 、 既定 のパターンは、すべての 項 目 に 一 致 する “*” です。このパターンでは、DOS における 照 合 と 同 じように、アスタリスクが 任 意 の 文 字 シーケンスに 一 致 します。パターンは、それぞれが 固 有 のパターンとして 解 釈 されるコンマ 区 切40 Caché 専 用 のシステム/ツールおよびユーティリティ


文 字 ベースの 管 理 ルーチンりのパターン・リストで 構 成 される 場 合 もあります。 対 象 の 項 目 がリスト 内 のいずれかのパターンに 一 致 すると、その 項目 は 選 択 されたものとして 処 理 されます。注 意同 じルーチンの 複 数 のインスタンスが、 異 なるシステム 管 理 者 (あるいは 同 じ 管 理 者 ) によって 同 時 に 実行 されるのを 防 止 する 方 法 はありません。こうした 状 況 になった 場 合 は、 影 響 を 受 けるデータの 一 貫 性に 考 慮 し、 各 インスタンスの 動 作 を 調 整 して 競 合 を 回 避 して、 目 的 を 達 成 するのは 管 理 者 の 責 任 となります。3.4.1 ^SHADOW管 理 者 は、このルーチンを 使 用 して、 別 の Caché インスタンスのシャドウ・システムとして 機 能 する Caché インスタンスを定 義 および 管 理 できます。1. シャドウの 作 成このシステムのシャドウ・サーバとして 機 能 する 別 システムを 識 別 するのに 必 要 なパラメータを 指 定 できます。2. シャドウの 編 集既 存 のシャドウに 関 連 付 けられているパラメータを 変 更 できます。3. シャドウとそのプロパティの 一 覧 表 示シャドウ・サーバとして 定 義 されているシステムとそのプロパティを 一 覧 表 示 します。4. シャドウとその 動 作 ステータスの 一 覧 表 示シャドウ・サーバとして 定 義 されているシステムとそのパフォーマンス 情 報 を 一 覧 表 示 します。5. シャドウの 開 始定 義 済 みのサーバでシャドウイングを 開 始 します。6. シャドウの 停 止シャドウイング 動 作 を 停 止 します。7. シャドウの 一 時 停 止シャドウ・サーバへのデータの 転 送 を 一 時 停 止 します。8. シャドウの 再 開一 時 停 止 中 のサーバでシャドウイング 動 作 を 再 開 します。9. シャドウの 再 起 動定 義 済 みのサーバでシャドウイングを 再 起 動 します。10. シャドウの 削 除現 行 システムの 定 義 済 みシャドウ・サーバ・リストからシステムを 削 除 します。11. シャドウの 詳 細 の 表 示特 定 のシャドウ・サーバに 関 するすべての 情 報 を 表 示 します。3.4.2 ^LEGACYNETWORKこのルーチンは、Caché と 連 携 できる 従 来 のネットワーク・ツールの 構 成 をサポートします。1. COM ポート 設 定Caché 専 用 のシステム/ツールおよびユーティリティ 41


Caché のリモート 管 理COM ポート (シリアル 通 信 ポート) をリスト、 追 加 、 編 集 、および 削 除 できます。COM ポートの 追 加 および 編 集 には、そのさまざまな 構 成 パラメータの 指 定 も 含 まれます。2. 終 了42 Caché 専 用 のシステム/ツールおよびユーティリティ


4移 行 と 変 換 ユーティリティこの 章 では、Caché データベースを 新 しいシステムに 移 行 する 際 に 使 用 できる 専 用 のツールと 手 法 について 説 明 します。• cvendian を 使 用 したビッグ・エンディアン・システムとリトル・エンディアン・システム 間 の 変 換 — ビッグ・エンディアン・プラットフォームとリトル・エンディアン・プラットフォームの 間 で 移 行 するために Caché データベースのバイト・オーダーを 変 換 するユーティリティについて 説 明 します。また、 指 定 されたデータベースのバイト・オーダーに 関 して 報 告するためのオプションも 提 供 しています。• FileMan ファイルから Caché クラスへの 変 換 — FileMan (MUMPS アプリケーション 用 のメタデータ・ユーティリティ)で 作 成 されたファイルを 読 み 取 り、それらをマップする Caché クラスを 生 成 するウィザードについて 説 明 します。• CSP に 変 換 される WebLink Developer タグ — WebLink Developer タグのセットについて 説 明 します。このセットは、Weblink Developer から Caché Server Pages (CSP) にアプリケーションを 移 行 する 際 に 便 利 です。4.1 cvendian を 使 用 したビッグ・エンディアン・システムとリトル・エンディアン・システム 間 の 変 換Caché には、Caché データベースのバイト・オーダーをビッグ・エンディアン ( 最 上 位 のバイトが 先 頭 ) からリトル・エンディアン ( 最 下 位 のバイトが 先 頭 )、またはその 逆 に 変 換 するユーティリティが 備 わっています。これは、convert endian を 略して cvendian と 呼 ばれています。2 つのタイプのプラットフォーム 間 でデータベースを 移 動 する 際 に 役 立 ちます。また、指 定 されたデータベースのバイト・オーダーに 関 して 報 告 するためのオプションも 提 供 しています。4.1.1 ユーティリティのプラットフォームと 場 所Windows システムおよび UNIX® システムの 場 合 、cvendian ユーティリティは \Bin\cvendian.exe というファイルで 提 供 されています。OpenVMS システムでは、このユーティリティは 提 供 されていません。サポートされるプラットフォームのエンディアンの 詳 細 は、"サポート 対 象 プラットフォーム" の “プラットフォームのエンディアン” を 参 照 してください。4.1.2 変 換 プロセスcvendian は、 変 換 するファイルを 持 つシステム 上 、または 変 換 するファイルを 使 用 する 予 定 であるシステムのいずれかで実 行 可 能 です (これらのシステムのいずれかで OpenVMS を 実 行 している 場 合 は 除 きます。この 場 合 は、 前 のセクションを 参 照 してください)。Caché 専 用 のシステム/ツールおよびユーティリティ 43


移 行 と 変 換 ユーティリティ例 えば、データベースをリトル・エンディアン・システムからビッグ・エンディアン・システムに 変 換 するには、リトル・エンディアン・システムで 変 換 を 実 行 した 後 データベースをビッグ・エンディアン・システムに 転 送 するか、ファイルを 最 初 に 転 送した 後 変 換 できます。注 釈バックアップ・ファイルやジャーナル・ファイルに 対 して、このユーティリティは 使 用 できません。 同 じエンディアンのプラットフォームでデータベースをリストアし、リストアしたデータベースを 別 のエンディアン・プラットフォームに 移 動 してから、cvendian ユーティリティを 使 用 してデータベースを 変 換 する 必 要 があります。データベースを 変 換 するプロセスは、 以 下 のとおりです。1. ユーティリティはソース・ファイルを 変 換 済 みのファイルと 置 換 するため、 使 用 中 のデータベース・ファイルのコピーを作 成 します。2. “ユーティリティの 構 文 ” のセクションで 説 明 する 構 文 を 使 用 して cvendian を 実 行 します。従 来 のマルチボリューム・データベースを 使 用 している 場 合 、マルチボリューム・データベース・ファイルの 変 換 後 、^LABELユーティリティを 使 用 して、 各 ボリュームのディレクトリの 名 前 を 変 更 します。Caché ターミナルを 使 用 して、%SYS ネームスペースから Do コマンドで ^LABEL を 呼 び 出 すと、 以 下 のように 適 切 な 入 力 を 求 めるメッセージが 表 示 されます。USER>zn "%SYS"%SYS>Do ^LABELEnter the name of the directory in which the database isstored. For a multi-volume database, enter the name of theprimary volume's directory, even if you want to relabel asecondary volume. For a multi-volume legacy 2K database, youshould enter the name of the secondary volume directory ifyou need to relabel it.Directory:4.1.3 ユーティリティの 構 文cvendian エンディアン・ユーティリティを 使 用 すると、 希 望 するバイト・オーダーを 指 定 するか、 変 換 せずに 現 在 のバイト・オーダーを 報 告 できます。 以 下 の 構 文 を 使 用 します。cvendian [-option] file1 [file2 ... file8]option 引 数 は 以 下 のいずれかになります。• -big — データベースをビッグ・エンディアンに 変 換• -little — データベースをリトル・エンディアンに 変 換• -report — データベースのバイト・オーダーを 報 告オプションを 短 縮 して 頭 文 字 で 表 すこともできます。これが 変 換 要 求 (-big または -little) であり、データベースのバイトオーダーが 既 に 指 定 したものになっている 場 合 、 警 告 メッセージが 表 示 され、 処 理 は 停 止 します。option 引 数 を 指 定 しない 場 合 、ユーティリティによって 既 存 のバイト・オーダーから 他 のバイト・オーダーにデータベースが 変 換 されます。ただし、option 引 数 を 使 用 することをお 勧 めします。file1 から file8 引 数 は 変 換 するファイルで、 各 ファイルは 完 全 なパス 名 を 含 むことができます。file2 から file8 の 引 数 はマルチボリューム・データベース 用 です。マルチボリューム・データベースを 変 換 する 場 合 、コマンド 行 ですべてのボリュームを 順 番 に 指 定 する 必 要 があります。ユーティリティは、 以 下 のアクションを 実 行 します。• データベースのバイト・オーダーを 自 動 的 に 検 出 します。• エンディアン 情 報 と 他 の 情 報 を 表 示 します。44 Caché 専 用 のシステム/ツールおよびユーティリティ


FileMan ファイルから Caché クラスへの 変 換• 変 換 を 実 行 します。• 成 功 、または 失 敗 を 示 すメッセージを 表 示 します。マルチボリューム・データベースでは、ファイルの 順 番 が 違 う 場 合 、またはリストが 不 完 全 な 場 合 、ユーティリティは 変 換 を実 行 せずファイルも 変 換 されません。4.1.3.1 例ここでは、Windows XP から Solaris SPARC で 使 用 するためにデータベースを 変 換 すると 想 定 します。SPARC と Intelではデータの 表 現 形 式 に 互 換 性 がないため、リトル・エンディアン (Intel) からビッグ・エンディアン (SPARC) に 変 換 する必 要 があります。Solaris システムへファイルを 移 動 する 前 に Windows システムで cvendian を 実 行 した 場 合 の 出 力 は 以下 のようになります。C:\CacheSys\Bin>cvendian -big c:\temp\solarisdb\cache.datThis database is little-endian.This database has a block size of 8192 bytes.This database has 1 volume and 1 map.The last block in the primary volume is 18176.Original manager directory is c:\temp\solarisdb\No extension volumes.Done converting c:\temp\solarisdb\cache.dat to big-endianC:\CacheSys\Bin>次 に、 変 換 済 みのデータベースを Solaris システムに 移 動 します。4.2 FileMan ファイルから Caché クラスへの 変 換FileMan は、MUMPS アプリケーション 用 にメタデータの 格 納 、アクセス、および 操 作 機 能 を 提 供 する 一 連 のユーティリティです。このセクションでは、FileMan ファイルを Caché クラスにマップする 方 法 について 説 明 します。FileMan のソース・コードはパブリック・ドメインにあり、インターシステムズでは 提 供 していません。ただし Caché には、FileMan で 作 成 されたファイルを 読 み 取 り、それらをマップする Caché クラスを 生 成 するウィザードが 用 意 されています。このセクションでは、 以 下 の 項 目 について 説 明 します。• FileMan マッピング・ユーティリティの 概 要• FileMan マッピング・ウィザードへのアクセス 方 法• FileMan マッピング・ウィザードの 既 定 の 設 定 の 指 定 方 法• ウィザードを 使 用 して FileMan ファイルを Caché クラスにマップする 方 法• FileMan マッピング・ユーティリティの API の 使 用 方 法• FileMan マッピング・ユーティリティを 使 用 した 後 の 手 順• FileMan ファイルのマップ 方 法 に 関 するメモ• 高 度 なクエリの 実 行 に 使 用 できるクラスこのセクションでは、FileMan グローバル (^DD および ^DIC) がシステムの 目 的 のネームスペースにロードされていることを 前 提 としています。Caché 専 用 のシステム/ツールおよびユーティリティ 45


移 行 と 変 換 ユーティリティ4.2.1 FileMan マッピング・ユーティリティの 概 要FileMan ウィザードを 使 用 すると、FileMan ファイルのカスタム・クラス・マッピングを 素 早 く 容 易 に 作 成 できます。マッピング・ユーティリティで 作 成 されたクラスでは、Caché ObjectScript および SQL を 介 して、ファイル・データにアクセスできます。ネームスペース 内 の FileMan ファイルのうち、1 つのみ、 複 数 、またはすべてをマップできます。ファイルごとに、 以下 のような 詳 細 な 制 御 を 行 うことができます。• マップするフィールド• クラスを 読 み 取 り 専 用 にするか 書 き 込 みアクセスさせるか• 生 成 されたクラスおよびプロパティ (テーブルおよびフィールド) の 名 前 の 形 式• 生 成 されたクラスのスーパークラス・リスト• ワード・プロセッシング・フィールドを、リスト・コレクションとしてマップするか 子 テーブルとしてマップするか4.2.2 FileMan ウィザードへのアクセスFileMan ウィザードにアクセスする 手 順 は 以 下 のとおりです。1. 管 理 ポータルを 開 きます。2. [システム・エクスプローラ] > [SQL] をクリックします。3. ヘッダのネームスペースをチェックします。 必 要 に 応 じて、[ 切 り 替 え] をクリックして 正 しいネームスペースに 変 更 します。4. [FileManウィザード] をクリックします。このページでは、 次 の 操 作 を 実 行 できます。• FileMan ファイルをマップする 時 に 使 用 する 既 定 の 設 定 の 指 定 。• 現 在 のネームスペースの FileMan ファイルの 1 つ、 複 数 、またはすべてのマッピング、および Caché クラスの 生 成 。• 過 去 のマッピング 処 理 のログの 表 示 。• 任 意 のバックグラウンド・タスクの 表 示 。4.2.3 既 定 の 設 定 の 指 定FileMan ウィザードは、クラスの 生 成 方 法 を 制 御 する 設 定 を 数 多 く 使 用 します。これらの 設 定 を 確 認 し、 頻 繁 に 使 用 する値 に 設 定 を 変 更 して、それを 既 定 の 設 定 として 保 存 すると 便 利 です。そのためには、ウィザードにアクセスして (“FileMan ウィザードへのアクセス” 参 照 ) 、 最 初 のページで 値 を 変 更 して、[デフォルトとして 保 存 ] をクリックします。使 用 可 能 な 設 定 は 以 下 のとおりです。• [ 作 成 したクラスの 所 有 者 ] — 作 成 したクラスの 所 有 者 として 使 用 するユーザ 名 を 指 定 します。 既 定 値 は、$Usernameの 現 在 の 値 です。• [クラスを 作 成 するパッケージの 名 前 ] — クラスを 作 成 するパッケージの 名 前 を 指 定 します。注 釈既 に 別 のパッケージにクラスがマッピングされている 場 合 、 新 しいパッケージにその FileMan ファイルを 再びマッピングしても、 古 いクラスは 自 動 的 には 削 除 されません。• [スーパー・クラス] — それぞれのマップされたクラスのスーパークラス・リストを 指 定 します。クラス 名 のコンマ 区 切 りリストの 文 字 列 を 指 定 してください。46 Caché 専 用 のシステム/ツールおよびユーティリティ


FileMan ファイルから Caché クラスへの 変 換• [ファイル 名 と 番 号 に 基 づくテーブル 名 形 式 ] — 生 成 されるテーブル 名 の 形 式 を 指 定 します。この 設 定 では、テーブル 名 への 使 用 が 有 効 な 任 意 の 文 字 と 共 に 以 下 のキーワードを 使 用 する 文 字 列 を 指 定 します。– — FileMan ファイルの 名 前 に 置 換 されます。– — ファイル 番 号 に 置 換 されます。 を 使 用 する 場 合 、ファイル 番 号 の 小 数 点 以 下 の 桁 の 文 字 は、アンダースコア 文 字 に 変 換 されます。[ファイル 名 と 番 号 に 基 づく 子 テーブル 名 形 式 ] の 例 を 参 照 してください。• [ファイル 名 と 番 号 に 基 づく 子 テーブル 名 形 式 ] — 生 成 される 子 テーブル 名 の 形 式 を 指 定 します。この 設 定 では、テーブル 名 への 使 用 が 有 効 な 任 意 の 文 字 と 共 に 以 下 のキーワードを 使 用 する 文 字 列 を 指 定 します。– — FileMan ファイルの 名 前 に 置 換 されます。– — ファイル 番 号 に 置 換 されます。– — 親 ファイルの 名 前 に 置 換 されます。– — 親 ファイルのファイル 番 号 に 置 換 されます。 または を 使 用 する 場 合 、ファイル 番 号 の 小 数 点 以 下 の 桁 の 文 字 は、アンダースコア 文 字 に 変 換 されます。この 設 定 の 例 は 以 下 のとおりです。– SUB_ — この 例 で、 子 テーブルのテーブル 名 は SUB_ にファイルの 名 前 が 続 く 文 字 列 になります。 例 : SUB_ACCESSIBLE_FILE– fc — この 例 で、 子 テーブルのテーブル 名 は f、 親 ファイルの 番 号 、c、このファイルの 番 号 の 順 に 構 成 される 文 字 列 になります。 例 : f200c200_032– — この 例 で、 子 テーブル 名 はファイル 名 と 同 じになります。• [FileMan Date フィールドに 使 用 するデータ 型 ] —FileMan DATE フィールドのマッピングに 使 用 するデータ 型 を 指 定します。 既 定 は、%Library.FilemanDate です。• [FileMan DateTime フィールドに 使 用 するデータ 型 ] —FileMan DATE/TIME フィールドのマッピングに 使 用 するデータ 型 を 指 定 します。 既 定 は、%Library.FilemanTimeStamp です。• ポインタの 拡 張 — ユーティリティで、ポインタ・フィールドを 拡 張 する 追 加 計 算 プロパティを 作 成 するかどうかを 指 定します。作 成 を 指 定 した 場 合 、ポインタ・フィールドを 拡 張 し、 参 照 先 ファイルの NAME (.01) フィールドと 等 しい 計 算 プロパティが、ユーティリティによって 作 成 されます。• [Set Of Codes フィールドの 拡 張 ] — マップされる Set Of Codes フィールドごとに、 拡 張 SOC (SetOfCodes) テーブルを 定 義 するかどうかを 指 定 します。– このオプションを [はい] にすると、クラスにマップされるこのようなフィールドごとに、コード・セットの CODE および MEANING にマップする 読 み 取 り 専 用 クラス/テーブルが 生 成 されます。テーブル 名 は _SOC_です。SOC テーブルには、2 つのフィールドがあります。CODE は CODE の 名 前 にマップされ、MEANING は CODE の 外 在 的 な 意 味 です。このテーブルは、^DD グローバルに 直 接 マップされるため、^DDグローバルの 定 義 が 更 新 されたら、テーブルによって 返 されるデータにすぐに 反 映 されます。– このオプションを [いいえ] ( 既 定 ) にすると、これらの SOC クラス/テーブルは 作 成 されません。• [Set Of Codes フィールドに 使 用 するデータ 型 ] — Set Of Codes フィールドのマッピングに 使 用 するデータ 型 を 指 定します。オプションは、%Library.EnumString ( 既 定 ) および %Library.String です。Caché 専 用 のシステム/ツールおよびユーティリティ 47


移 行 と 変 換 ユーティリティ%Library.EnumString を 使 用 すると、OdbcToLogical() メソッドおよび LogicalToOdbc() メソッドが 提 供 され、xDBC クライアント・アプリケーションのコード 値 ではなく、コード・セットの 意 味 を 使 用 できるため 好 都 合 です。• [ 次 のフィールド 用 の 必 須 プロパティの 定 義 ] — 必 須 の FileMan フィールドのうち、いずれを 必 須 のプロパティとして定 義 するかを 制 御 します。– この 設 定 を [ 必 須 のフィールド] ( 既 定 ) にすると、 必 須 としてマークを 付 けられている FileMan フィールドが、 必須 のプロパティとして 定 義 されます。– この 設 定 を [ 必 須 の 識 別 子 ] にすると、 必 須 の 識 別 子 として 定 義 されている FileMan フィールドのみが、 必 須 のプロパティとして 定 義 されます。• [ 拡 張 マッピング] — 拡 張 マッピングに 使 用 するため、マップ 定 義 のグローバル 名 に 挿 入 する 文 字 列 を 指 定 します。例 えば、["SD"] を 指 定 した 場 合 、グローバルは ^LR(...) ではなく、^["SD"]LR(...) とマッピングされます。これは、 拡 張 グローバル・マッピングに 使 用 可 能 な 任 意 の 有 効 文 字 列 を 使 用 でき、[...] または |...| の 括 弧 で囲 む 必 要 があります。• [IEN フィールドの 名 前 ] — IEN フィールドの 名 前 を 指 定 します。 既 定 値 は IEN です。• クラスを 保 持 — 既 にクラスが 存 在 している 場 合 に、クラス 全 体 を 再 作 成 するかどうかを 指 定 します。– この 設 定 が [いいえ] の 場 合 、ユーティリティによってクラスが 削 除 され、 再 作 成 されます。これによりクラスに 対する SQL 特 権 およびすべてのアドオンが 失 われることになります。– この 設 定 が [はい] の 場 合 、ユーティリティによって、クラス 全 体 ではなく、プロパティ、ストレージ、インデックス、外 部 キーなどが 再 作 成 されます。メモ :• クラス 定 義 に 独 自 の 項 目 を 手 動 で 追 加 する 前 に、Caché 2010.2 以 降 のバージョンを 使 用 して 少 なくとも 1回 FM2Class ユーティリティを 実 行 しておく 必 要 があります。これが 必 要 なのは、 以 前 のバージョンでは、この 機 能 に 必 要 な 必 須 のメタデータが 保 存 されていないためです。• クラスをマッピングした 後 、このクラスを 別 のネームスペースまたは 別 のシステムに 移 動 し、[クラス 保 持 ?] を[はい] に 設 定 した 状 態 で 新 しい 場 所 からクラスを 再 マップしようとする 場 合 は、^oddFMD グローバルも 手 動で 移 動 /コピーする 必 要 があります。これは、[クラス 保 持 ?] 機 能 が 必 要 とするメタデータがこのグローバルに 格 納 されているためです。• [クラス 保 持 ?] 機 能 は、[Set Of Codes フィールドの 拡 張 ] を [はい] に 設 定 したときに 作 成 される SOC クラスと 連 携 するためのものではありません。つまり、これらのクラスに 独 自 のパラメータ、プロパティ、インデックスなどを 追 加 する 場 合 、[クラス 保 持 ?] が [はい] に 設 定 されていてもこれらの 変 更 は 保 持 されません。• [ 反 復 ] — サブファイルおよびポインタもマッピングするかどうかを 制 御 します。– この 設 定 が [ 反 復 なし] の 場 合 、このファイルのみがマッピングされます。サブファイルやポインタはマッピングされません。– この 設 定 が [ 部 分 反 復 ] の 場 合 、ファイルが 1 レベルのサブファイルおよびポインタと 共 にマッピングされます。– この 設 定 が [ 完 全 反 復 ] の 場 合 、ファイルがすべてのサブファイルおよびポインタと 共 にマッピングされます。これが 既 定 値 です。• [ワード・プロセッシング・フィールドの 変 換 ] – ワード・プロセッシング・フィールドのマッピング 方 法 を 指 定 します。[ 子テーブルとして 変 換 ]、または [リスト・コレクションとして 変 換 ] のいずれかを 選 択 します。• 読 み 取 り 専 用 — 生 成 されたクラスを 読 み 取 り 専 用 にするかどうかを 指 定 します。• [ログ・ファイル] — ユーティリティが 出 力 を 記 録 するファイルの 名 前 を 指 定 します。[ 参 照 ...] をクリックしてファイルを 選択 します。またはファイル 名 を 入 力 します。• クラスのコンパイル — クラスを 作 成 後 にコンパイルするかどうかを 指 定 します。48 Caché 専 用 のシステム/ツールおよびユーティリティ


FileMan ファイルから Caché クラスへの 変 換• [コンパイル・フラグ] — 任 意 のクラス・コンパイラ 修 飾 子 、およびフラグを 指 定 します。• [ 削 除 フラグ] — 任 意 のクラス 削 除 修 飾 子 、およびフラグを 指 定 します。• [ 結 果 の 表 示 ] — 結 果 の 表 示 方 法 を 制 御 します。[ 全 画 面 表 示 ] ( 既 定 )、[ 最 小 画 面 表 示 ]、または [ 画 面 表 示 なし] を選 択 します。4.2.4 FileMan ファイルのマッピングFileMan ファイルを Caché クラスにマップする 手 順 は 以 下 のとおりです。1. FileMan ウィザードにアクセスします(“FileMan ウィザードへのアクセス” 参 照 )。2. 必 要 に 応 じて、ウィザードの 最 初 のページで 設 定 を 変 更 します。 設 定 の 詳 細 は、 前 のセクション “ 既 定 の 設 定 の 指定 ” を 参 照 してください。3. [ 次 へ] をクリックします。ウィザードの 次 のページを 使 用 して、マップするファイルを 指 定 します。4. ファイル 名 のすべてまたは 一 部 を 入 力 して、[ 検 索 ] をクリックします。ウィザードには、 指 定 した 文 字 列 から 始 まるこのネームスペース 内 のすべての FileMan ファイルが 表 示 されます。5. 以 下 のいずれかを 行 います。• [すべてをマップ] をクリックします。 確 認 を 求 めるプロンプトが 表 示 されます。[OK] をクリックします。すると、 直 ちにファイルをマップするバックグラウンド・タスクが 起 動 します。この 場 合 、このセクションの 残 りの 手順 は 適 用 されません。• [ 全 て 選 択 ] をクリックします。 次 に [ 次 へ] をクリックします。• 1 つ 以 上 のファイルの [ 選 択 ] リンクをクリックします。それぞれのファイルに 対 して、マップするフィールドのリストが 表 示 されます ( 既 定 ではすべてのフィールド)。マップしないフィールドがあれば、それをダブルクリックします。ファイルとそのフィールドを 選 択 したら、[カートに 追 加 ] をクリックします。• 1 つ 以 上 のファイルの [カートに 追 加 ] リンクをクリックします。このオプションにより、すべてのフィールドがマップされますが、この 段 階 ではフィールドを 取 得 する 必 要 がないので、ウィザードは 高 速 に 動 作 します。ファイルを選 択 したら、[ 次 へ] をクリックします。6. 選 択 したファイルを 確 認 します。ツリーに、 選 択 したファイルがそれぞれのフィールドと 共 に 表 示 されます。いずれかのファイルを 削 除 するには、ファイル 名 をクリックしてからツリーの 上 の [ 削 除 ] リンクをクリックします。フィールドをクリックしてから [ 削 除 ] をクリックすると、そのフィールドのファイル 名 も 削 除 されます。カートを 空 にする (そのすべてを 削 除 する) には、ツリーの 上 の[カートのクリア] リンクをクリックします。7. 必 要 に 応 じて、 次 のいずれかの 操 作 を 行 います。• ファイル 名 をクリックし、ツリーの 上 の [ 削 除 ] リンクをクリックして、ファイルを 削 除 します。• フィールド 名 をクリックし、[ 削 除 ] リンクをクリックして、フィールドを 削 除 します。• [カートのクリア] をクリックして、すべてのファイルを 削 除 します (これを 実 行 すると、ウィザードは 前 のページに戻 ります)。8. [ 完 了 ] をクリックします。すると、ファイルをマップするバックグラウンド・ジョブが 起 動 します。Caché 専 用 のシステム/ツールおよびユーティリティ 49


移 行 と 変 換 ユーティリティ4.2.5 プログラムによるアクセスFileMan ウィザードは %fm2class ルーチンを 使 用 します。これは、Caché および Ensemble 2009.1 の 一 部 としてインストールされます。このルーチンを XML ファイルとして 取 得 し、それを Caché または Ensemble バージョン 5.0.* 以 上 にインストールすることもできます。このセクションでは、 必 要 に 応 じてこのルーチンをインストールし、それを 使 用 する 方 法 を 説 明 します。このルーチンは 直接 呼 び 出 さずに、$SYSTEM.OBJ.FM2Class のメソッドを 使 用 します。4.2.5.1 システム 要 件標 準 的 な Caché または Ensemble のバージョン 5.0.* 以 上 のインストールを 実 行 している 必 要 があります。機 能 する FileMan のインストールが 必 要 です。4.2.5.2 以 前 の 製 品 バージョンへのルーチンのインストール%fm2class ルーチンは、システムにロード 可 能 な XML ファイルとして 提 供 されます。Caché または Ensemble バージョン5.1 以 上 にインストールする 方 法 は、 以 下 のとおりです。1. まず、%CACHELIB データベースが 読 み 取 り 専 用 でマウントされていないことを 確 認 します。2. 以 下 のコマンドを 使 用 して、XML ファイルを %SYS ネームスペースにロードします。Do $SYSTEM.OBJ.Load("C:\Kits\FM2Class_v101.xml","psc")"C:\Kits\" を 実 際 のパス 名 に 置 き 換 えます。これで、ユーティリティを 実 行 する 準 備 ができました。Caché または Ensemble バージョン 5.0 にインストールする 場 合 は、インターシステムズのサポート 窓 口 までお 問 い 合 わせください。4.2.5.3 構 成 設 定 の 指 定%fm2class ルーチンは、 以 下 のテーブルに 示 すように、FileMan ウィザードで 指 定 した 設 定 と 同 じ 設 定 を 使 用 します。ドロップダウン・リストとして 表 示 される 設 定 に 対 して、 使 用 する 値 を 以 下 のテーブルに 示 します。すべての「はい/いいえ」設 定 では、1 が「はい」、0 が「いいえ」を 意 味 します。その 他 の 設 定 では、ウィザードに 記 述 されているのと 同 じ 値 を 使 用します。FileMan ウィザードの 名 前 の 設 定作 成 したクラスの 所 有 者クラスを 作 成 するパッケージの 名 前スーパー・クラスファイル 名 と 番 号 に 基 づくテーブル 名 形 式ファイル 名 と 番 号 に 基 づく 子 テーブル 名 形 式FileMan Date フィールドに 使 用 するデータ 型FileMan DateTime フィールドに 使 用 するデータ 型ポインタの 拡 張Set Of Codes フィールドの 拡 張内 部 の 設 定 名 、メモownerpackagesuperClassestableNameFormatchildTableNameFormatdateTypedatetimeTypeexpandPointersxpandSetOfCodes50 Caché 専 用 のシステム/ツールおよびユーティリティ


FileMan ファイルから Caché クラスへの 変 換FileMan ウィザードの 名 前 の 設 定Set Of Codes フィールドに 使 用 するデータ 型次 のフィールド 用 の 必 須 プロパティの 定 義拡 張 マッピングIEN フィールドの 名 前クラスを 保 持反 復ワード・プロセッシング・フィールドの 変 換読 み 取 り 専 用ログ・ファイルクラスのコンパイルコンパイル・フラグ削 除 フラグ結 果 の 表 示内 部 の 設 定 名 、メモsetOfCodesEnumrequiredTypeextendedMappingienFieldNameretainClassrecursion0 は 反 復 なし、1 は 部 分 反 復 、2 は 完 全 反 復 を 意 味 します。wpIsListreadonlylogFilecompilecompileQSpecdeleteQSpecdisplay0 は 表 示 なし、1 は 最 小 表 示 、2 は 完 全 表 示 を 意 味 します。既 定 の 設 定 を 変 更 するには、 以 下 のようなコマンドを 使 用 します。Set ^%SYS("sql","fm2class",setting) = valueここで、setting は 前 のテーブルに 示 した 内 部 設 定 名 で、value はそれに 割 り 当 てる 値 です。%fm2class ルーチンを 使 用 する 場 合 、 以 下 の 形 式 の 配 列 で 渡 すことができます。arrayName(setting) = value以 下 はその 例 です。%fm("display")=1%fm("package")="VISTA"%fm("superClasses")="%XML.Adaptor"%fm("wpIsList")= 14.2.5.4 プログラム 的 な FileMan ファイルのマッピング前 述 のように、%fm2class ルーチンを 直 接 呼 び 出 すのではなく、 以 下 のように $SYSTEM.OBJ.FM2Class メソッドを 使 用します。• 現 在 のネームスペースのすべての FileMan ファイルをマップする 場 合Do $SYSTEM.OBJ.FM2Class.All(.fmSettings, .classCount)• 1 つの FileMan ファイルをマップする 場 合Do $SYSTEM.OBJ.FM2Class.One(fileNumber,.fmSettings,.fmFields,.classCount)• 現 在 のネームスペースのいくつかの FileMan ファイルをマップする 場 合Do $SYSTEM.OBJ.FM2Class.Some(fileList,.fmSettings,.fmFields,.classCount)Caché 専 用 のシステム/ツールおよびユーティリティ 51


移 行 と 変 換 ユーティリティ引 数 は 以 下 のとおりです。• fmSettings は、ユーティリティで 使 用 する 設 定 を 含 む、 参 照 渡 しのオプション 配 列 です (このセクションの 前 述 の 説 明を 参 照 )。• classCount はオプションで 参 照 渡 しされます。これは、マッピング・ユーティリティで 作 成 されたクラスの 数 を 返 します。• fileNumber は、マップするファイルの FileMan ファイル 番 号 です。• fmFields を 定 義 すると、マップされるファイルのフィールドが 制 限 されます。これは、fmFields(file-number,field-number) 形 式 の 配 列 です。 必 須 のフィールドおよびこの 配 列 で 定 義 されたフィールドは、クラス 定 義 でマップされます。この 配 列 が 空 の 場 合 、または 定 義 されていない 場 合 、ファイルのすべてのフィールドがマップされます。この 配 列 は 参 照 によって 渡 されます。• fileList は、マップするファイルの FileMan ファイル 番 号 です。ファイル 番 号 またはファイル 番 号 の 範 囲 のコンマ 区 切りリストを 指 定 します。または、 参 照 渡 しされるファイル 番 号 の 配 列 を 指 定 します。4.2.6 次 の 手 順変 換 ユーティリティを 使 用 した 後 、 生 成 されたクラスへの SQL アクセスが 可 能 であることを 確 認 する 必 要 があります。そのためには、 管 理 ポータルを 使 用 します。 少 なくとも、 以 下 の 操 作 ができることを 確 認 します。• スキーマの 参 照 。• 新 しいクラスに 対 する SQL クエリの 実 行 。ネームスペースにグローバル・マッピングおよびルーチン・マッピングを 作 成 することが 必 要 になる 場 合 もあります。 生 成されたクラスで 使 用 されるルーチンを 確 認 し、すべてのルーチンがこのネームスペースで 使 用 可 能 であることを 確 認 します。4.2.7 メモこのセクションでは、^%fm2class ルーチンで Caché クラス 定 義 を 生 成 する 際 の 留 意 事 項 について 説 明 します。• 基 本• 大 きな FileMan ファイルに 対 して 生 成 されるトリガ・ルーチン• 可 変 ポインタ・フィールドのマッピング 方 法• 新 しい 形 式 の 相 互 参 照 のマッピング 方 法4.2.7.1 基 本概 略 を 理 解 するために、 簡 単 な FileMan ファイルと 結 果 として 得 られる Caché クラス 定 義 を 比 較 するとわかりやすくなります。PostalCode という 単 純 なファイルの 例 について 考 えてみます。(FileMan データ・ディクショナリ・ユーティリティを 介 して) このファイルのファイル 属 性 を 確 認 する 場 合 、このファイルの 相 互 参 照 およびインデックスを 表 示 します。 以 下 はその例 です。52 Caché 専 用 のシステム/ツールおよびユーティリティ


FileMan ファイルから Caché クラスへの 変 換同 じユーティリティで、このファイルのフィールドの 定 義 も 表 示 されます。この 際 のフィールドのタイトルは 以 下 のとおりです (アルファベット 順 )。• City• City Abbrevation• City Key• County• Inactive Date• Mail Code• Preferred City Key•• Unique Key (VA)FileMan データ・ディクショナリ・ユーティリティには、PostalCode ファイルに 2 つのポインタが 含 まれていることも 示 されます。• County Code ファイルへのポインタ• State ファイルへのポインタこのファイルをマップすると、5 つのクラスが 作 成 されます。これには、PostalCode を 示 すクラス、およびこのクラスが 参照 するクラスが 含 まれます。Caché スタジオでは、パッケージ 名 に TEST と 指 定 していると、 以 下 のように 表 示 されます。Caché 専 用 のシステム/ツールおよびユーティリティ 53


移 行 と 変 換 ユーティリティTEST.POSTALCODE のクラス 定 義 は 長 すぎてここでは 表 示 できませんが、 以 下 のリストにこのクラス 定 義 の 詳 細 を 示 します。• FILEMANFILENAME パラメータは "POSTAL CODE" に 設 定 され、FILEMANFILENUMBER パラメータは 5.12に 設 定 されます。これらの 2 つのパラメータは、このクラスがマップされた FileMan ファイルを 示 します。• このクラスには、 以 下 のプロパティがあります。– CITY– CITYABBREVIATION– CITYKEY– COUNTY– IEN– INACTIVEDATE– MAILCODE– PREFERREDCITYKEY– STATE– UNIQUEKEYVAこれらのプロパティの 定 義 は、 対 応 するフィールドの 定 義 から 派 生 します。また、FileMan 内 部 エントリ 番 号 は、プロパティとして 明 示 的 に 示 されます。説 明 テキストは、 引 き 継 がれてコメントとして 使 用 されます。 以 下 はその 例 です。/// FileMan Field Label: 'STATE' FileMan Field Number: '3'/// This field contains a pointer to the State File to represent the state/// associated with this Postal Code.Property STATE As TEST.STATE [ SqlColumnNumber = 6, SqlFieldName = STATE ];これらのプロパティの 一 部 は、(この 例 のように) 他 の 生 成 されたクラスへの 参 照 です。この 表 現 は、PostalCodeファイルで 定 義 された 相 互 参 照 に 対 処 しています。• このユーティリティでは、 作 成 された 各 ポインタ・フィールドに 対 して 外 部 キー 制 約 が 作 成 されます。 外 部 キー 制 約は、 単 に 参 照 テーブルの ID を 参 照 します。この 例 では、クラスに、PostalCode ファイルのポインタ 参 照 を 表 す 次 の 外 部 キーが 含 まれます。54 Caché 専 用 のシステム/ツールおよびユーティリティ


FileMan ファイルから Caché クラスへの 変 換– FKeyCOUNTY(COUNTY) は、 次 を 参 照 します。 TEST.COUNTYCODE()– FKeySTATE(STATE) は、 次 を 参 照 します。 TEST.STATE()このセクションで 後 述 する “ 可 変 ポインタ・フィールドのマッピング” のセクションも 参 照 してください。• このクラスには、1 つのインデックスがあります。Index IDKeyIndex On IEN• このクラスには、FileMan ファイラを 使 用 してファイリングするときに 実 行 する 3 つのトリガが 含 まれます。– BeforeDeleteFiling– BeforeInsertFiling– BeforeUpdateFiling4.2.7.2 大 きな FileMan ファイルのトリガ大 きな FileMan ファイルで 作 業 する 場 合 、%fm2class ルーチンが、クラス 定 義 に 加 えて、ルーチンを 生 成 しているかどうかもチェックする 必 要 があります。前 述 のように、%fm2class ルーチンでは FileMan ファイラを 使 用 してファイリングするときに 実 行 するトリガを 生 成 します。非 常 に 大 きい FileMan ファイルでは、これらのトリガが 大 きすぎてクラス 定 義 に 含 められない 場 合 があります。そのような場 合 、%fm2class ルーチンは、そのトリガ・コードのほとんどを 外 部 ルーチンに 生 成 します。この 外 部 ルーチンの 名 前 は、番 号 の 代 わりに 名 前 に I または U が 含 まれることを 除 いて、 生 成 されるテーブルのルーチンと 同 じです。 例 えば、Sample.Person.TI または Sample.Person.TU となります。これらのルーチンは、%fm2class ユーティリティによって作 成 およびコンパイルされます。Caché スタジオでは、(クラス 定 義 に 必 要 でも) これらのルーチンがクラス 定 義 に 関 連 付 けられません。したがって、クラスを 使 用 する 際 は、ルーチンが 常 に 使 用 可 能 であるようユーザ 側 で 注 意 する 必 要 があります。 例 えば、これらのクラスをエクスポートまたは 削 除 する 場 合 は、これらのルーチンも 同 様 にエクスポートまたは 削 除 する 必 要 があります。4.2.7.3 可 変 ポインタ・フィールドのマッピングCaché クラスにマップされるファイル 内 の 各 可 変 ポインタ・フィールドは、そのクラス 内 の SqlComputed キーワードでマークされているプロパティを 定 義 します。この 可 変 ポインタ・フィールドが 参 照 するファイルごとに、クラス 内 に 追 加 のプロパティが 作 成 され、これらのプロパティは SqlComputed および Transient のキーワードでマークされます。 可 変 ポインタ・フィールドの 名 前 が VariablePointerFieldName、このフィールドがポイントするファイル 名 が PointerFileName である 場合 、 追 加 されるプロパティは VariablePointerFieldNamePointerFileName になります。このプロパティの SQL フィールド名 は VariablePointerFieldName_PointerFileName です。例 えば、ファイル ABC に VP という 可 変 ポインタ・フィールドが 含 まれているとします。VP フィールドは、Red、White、または Blue ファイルをポイントできます。これによって、 以 下 のプロパティがクラス 定 義 に 作 成 されます。Caché 専 用 のシステム/ツールおよびユーティリティ 55


移 行 と 変 換 ユーティリティプロパティVPVPRedVPWhiteVPBlueSqlFieldNameVP_RedVP_WhiteVP_Blue詳 細INSERT および UPDATE 時 に 計 算 される SQL。マップ 定 義 内 に 格 納 されます。可 変 ポインタ・フィールドの 内 部 値 を 含 みます。 通 常 、この 値 は "41;DIC(40.7," のようになります (40.7 ファイルの 行 41 をポイントすることを 意 味 します)。この 行 の VP フィールドが Red ファイルをポイントしない 限 り NULL である、 一 時的 な 計 算 フィールドです。Red テーブル/ファイル 内 の 行 をポイントするよう、SQLINSERT または UPDATE を 使 用 して VP の 値 を 更 新 するには、VP_Red の 値 をその 行 の ID に 設 定 します。この 行 の VP フィールドが White ファイルをポイントしない 限 り NULL である、 一時 的 な 計 算 フィールドです。White テーブル/ファイル 内 の 行 をポイントするよう、SQL INSERT または UPDATE を 使 用 して VP の 値 を 更 新 するには、VP_Whiteの 値 をその 行 の ID に 設 定 します。この 行 の VP フィールドが Blue ファイルをポイントしない 限 り NULL である、 一時 的 な 計 算 フィールドです。Blue テーブル/ファイル 内 の 行 をポイントするよう、SQL INSERT または UPDATE を 使 用 して VP の 値 を 更 新 するには、VP_Blueの 値 をその 行 の ID に 設 定 します。いずれの 場 合 も、VP フィールドは 自 動 的 に 計 算 され 格 納 されます。3 つの 参 照 フィールド (VP_Red、VP_White、および VP_Blue) の 定 義 に 加 えて、これらを 参 照 するために、3 つの 外部 キー 制 約 が ABC クラスに 作 成 されます。これは、ファイル 間 の 参 照 整 合 性 を 確 保 するために 実 行 されます。4.2.7.4 新 しい 形 式 の 相 互 参 照 のマッピングこのユーティリティは、 新 しい 形 式 の 相 互 参 照 が 単 純 な set/kill ロジックで 定 義 されている 場 合 、これをインデックス・マップに 変 換 します。これにより、Caché クエリ・オプティマイザは、 新 しい 形 式 の 相 互 参 照 インデックスが 存 在 する 場 合 はそれを 選 択 し、 場 合 によってはクエリのパフォーマンスを 向 上 させることができます。4.2.8 高 度 なクエリ%FileMan.File および %FileMan.Field クラスを 使 用 して、FileMan データ・ディクショナリをクエリできます。また、%FileMan.MappedFile および %FileMan.MappedField クラスを 使 用 して、FileMan とクラス 定 義 のマッピングに 関 するメタデータを 表 示 できます。%FileMan クラスの 詳 細 は、Intersystems Class Reference を 参 照 してください。4.3 CSP に 変 換 される WebLink Developer タグこのセクションで 記 載 されているタグは、CSP タグに 置 き 換 えられています。Weblink Developer から Caché Server Pages(CSP) へアプリケーションを 移 植 する 際 に、ご 利 用 ください。各 タグの 詳 細 は、"Weblink Developer ガイド" を 参 照 してください。...このルールは、WLD の action= 機 能 を 実 装 します。56 Caché 専 用 のシステム/ツールおよびユーティリティ


CSP に 変 換 される WebLink Developer タグWLD:ACTIONSCRIPT... タグは、 タグに 代 わりました。属 性MethodNameReturnType引 数説 明生 成 されたメソッド 名 。 有 効 なメソッド 名 である必 要 があります。メソッドの 返 りタイプメソッドに 対 する 引 数 のリスト値methodName: 文 字 列dataType: 文 字 列spec: 文 字 列...このルールは、 タグを 実 装 します。属 性NameColsRows説 明グリッド 名最 大 列 数最 大 行 数値文 字 列整 数整 数必 須 項 目 。このタグは、WLD 機 能 を 使 用 するすべてのページの 最 後 尾 の、 タグの 直 前 に 記 述 します。 タグは、Developer と 同 様 に、 警 告 として Error 変 数 を 表 示 します。 タグは、WebLink Developer と 同 様 に、フィールドへのフォーカスを 強 制 します。タグ 内 で 実 行 されます。属 性FIELDFORM説 明フォーカスするフィールド 名フィールドに 含 まれるフォーム 番 号値文 字 列文 字 列Caché 専 用 のシステム/ツールおよびユーティリティ 57


移 行 と 変 換 ユーティリティ...このルールは、 標 準 タグを 実 装 します。属 性NameColsRows説 明グリッド 名最 大 列 数最 大 行 数値文 字 列整 数整 数......このルールは、DOM 内 で タグをインスタンス 化 するためのものです。属 性値ColRow説 明表 示 される 値値 が 表 示 されるセルの 列値 が 表 示 されるセルの 行値文 字 列整 数整 数......このルールは、DOM 内 で タグをインスタンス 化 するためのものです。属 性NameCol説 明列 名ヘッダ 部 を 表 示 する 列値文 字 列整 数... タグは、LIST 配 列 からオプションを 生 成 します。...このページの 後 に 実 行 するスクリプトです。...このページの 前 に 実 行 するスクリプトです。58 Caché 専 用 のシステム/ツールおよびユーティリティ


CSP に 変 換 される WebLink Developer タグWLDSHOWLV は、すべての 要 求 とセッション・オブジェクトのコンテンツを 表 示 します。必 須 項 目 。このタグは、WLD 機 能 を 使 用 するすべてのページの 開 始 部 分 に 記 述 します。...WLD:WRITETEXT は、TEXTAREA 配 列 からテキストを 生 成 します。...Oracle XSQL タグです。属 性CONNECTIONMAX-ROWSROW-ELEMENTROWSET-ELEMENTSKIP-ROWSTAG-CASEXMLNS:XSQL説 明接 続 識 別 子返 り 値 の 最 大 行 数 を 指 定(SKIP-ROWS で 飛 ばされた 行 は 含 みません)各 行 に XML タグを 指 定 。 既 定 はROW。各 行 セットに XML タグを 指 定 。 既 定は ROWSET。データを 返 す 前 に、 飛 ばす 行 数 を 指定 。XML タグの 書 体 を 制 御 。"upper" は大 文 字 、"lower" は 小 文 字 です。 既定 では、 列 名 の 書 体 を 使 用 します。CSP で Oracle の XSQL タグをサポートするには、URN:ORACLE-XSQLを 指 定 します。値文 字 列文 字 列文 字 列文 字 列文 字 列文 字 列文 字 列このルールは、WLD の CHECKBOX ボタン・インタフェースを 模 したメカニズムを 実 装 します。Caché 専 用 のシステム/ツールおよびユーティリティ 59


移 行 と 変 換 ユーティリティこのルールは、 タグ 内 で WLD の NEXTPAGE= および ACTION= をサポートする 機 能 を実 装 します。属 性動 作NameNextPageOnClick説 明送 信 時 に 実 行 される 関 数 または 式 。イメージ 名 。次 に 表 示 するページを 指 定 。マウスがクリックされました値関 数 または 式文 字 列 。URIJavascript コードこのルールは、WLD の RADIO ボタン・インタフェースを 模 したメカニズムを 実 装 します。属 性NameOnclick値説 明ラジオ・ボタン 名 。マウスがクリックされましたラジオ・ボタンの 値 。値文 字 列 。Javascript コード文 字 列 。このルールは、 タグ 内 で WLD の NEXTPAGE= および ACTION= をサポートする 機 能 を実 装 します。属 性動 作NameNextPageOnclick説 明送 信 時 に 実 行 される 関 数 または 式 。フォーム 名 。次 に 表 示 するページを 指 定 。マウスがクリックされました値関 数 または 式文 字 列 。URIJavascript コード60 Caché 専 用 のシステム/ツールおよびユーティリティ


5Caché のインストールと 配 布この 章 では、Caché システムのインストールと 配 布 のカスタマイズに 使 用 できるクラスとユーティリティについて 説 明 します。 以 下 の 項 目 について 説 明 します。• インストール・マニフェストの 作 成 および 使 用 — %Installer ユーティリティを 使 用 した、インスタンスを 構 成 するためのコードを 生 成 するインストール・マニフェストの 定 義 方 法 を 説 明 します。• Windows プラットフォームでの 自 動 カスタム・インストール — Caché インスタンスのカスタム・インストール、アップグレード、 再 インストール ( 修 復 )、および 削 除 (アンインストール) を 自 動 で 実 行 する 際 に 使 用 できるユーティリティについて 説 明 します。• Caché ディストリビューションへの UNIX® インストール・パッケージの 追 加 — 既 存 の Caché ディストリビューションにUNIX® インストール・パッケージを 追 加 する 方 法 について 説 明 します。5.1 インストール・マニフェストの 作 成 および 使 用このセクションでは、%Installer ユーティリティの 使 用 によるインストール・マニフェストの 定 義 および 使 用 方 法 について 説明 します。マニフェストには 段 階 的 なインストール・プロセスではなく、 結 果 として 得 られる 構 成 を 記 述 します。この 付 録 では、 以 下 の 項 目 について 説 明 します。• 概 要• インストール・マニフェストの 作 成• ユーザとパスワードの 追 加• メッセージの 追 加• タグ• 内 で 使 用 できる 変 数• マニフェストの 使 用 法• 例5.1.1 概 要%Installer ユーティリティによりインストール・マニフェストを 定 義 します。これは 段 階 的 なインストール・プロセスの 定 義 ではなく、 結 果 として 得 られる 構 成 を 記 述 するものです。マニフェストを 定 義 するためには、その 構 成 を 記 述 した XData ブCaché 専 用 のシステム/ツールおよびユーティリティ 61


Caché のインストールと 配 布ロックを 含 むクラスを 作 成 します。また、このクラスにインスタンス 構 成 用 のコードを 生 成 するための XData ブロックを 使 用するメソッドを 組 み 込 みます。(このドキュメントより、このメソッドをコピーして 貼 り 付 けることができます。)XData ブロック 内 において、 通 常 はインストール 中 に 提 供 される 情 報 (スーパーサーバ・ポート、オペレーティング・システムなど) を 含 む 変 数 へのアクセスを 得 ます。インストール 中 においては、ターミナル・セッションより、またはコード 内 で %Installer マニフェストを 使 用 できます。これは%SYS ネームスペースで 実 行 する 必 要 があります。5.1.2 マニフェストを 定 義 するクラスの 作 成インストール・マニフェストを 定 義 するクラスを 作 成 するため、 以 下 のようなクラスを 作 成 します。• %occInclude インクルード・ファイルを 含 める 必 要 があります。• この 章 の 説 明 に 従 って、XData ブロックを 組 み 込 む 必 要 があります。XData ブロックには 正 当 な 名 前 を 任 意 に 指 定 することができ、この 名 前 を 後 に 引 数 として 使 用 します。XData ブロックの 名 前 の 後 に [XMLNamespace = INSTALLER] を 使 用 すると、XData ブロックの 入 力 に 応 じてスタジオによりサポートが 提 供 されます。XData ブロックのルート 要 素 は とする 必 要 があります。 詳 細 は、この 章 で 後 述 する “ タグ” を 参 照 してください。• 以 下 の 例 で 示 すように、setup() メソッドを 定 義 する 必 要 があります。• setup() メソッドは、 以 下 の 例 で 示 すような 名 前 で XData ブロック を 参 照 する 必 要 があります。以 下 に 例 を 示 します。Include %occIncludeClass MyPackage.MyInstaller{XData MyInstall [ XMLNamespace = INSTALLER ]{}62 Caché 専 用 のシステム/ツールおよびユーティリティ


インストール・マニフェストの 作 成 および 使 用ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3,pInstaller As %Installer.Installer,pLogger As %Installer.AbstractLogger)As %Status [ CodeMode = objectgenerator, Internal ]{#; Let XGL document generate code for this method.Quit ##class(%Installer.Manifest).%Generate(%compiledclass,%code, "MyInstall")}}5.1.2.1 キー・オプション1 番 外 側 の xml タグ () には、コード 生 成 に 関 するすべての 情 報 が 格 納 されています。マニフェストでネームスペースを 定 義 するために 必 要 な 数 の タグを タグ 内 に 入 れることができます。 タグ 内 にある タグは、データベースおよびマッピング (またはこのいずれか) が 定義 されている 場 合 にのみ 必 要 です。ネームスペースを 定 義 するために 必 要 な 数 の タグを タグ 内 に 入 れる 必 要 があります。また、 以 下 の 各 タグに 続 けて、 必 要 に 応 じて タグ、 タグ、および タグを 追 加 できます。 タグは、 定 義 されたマッピングを 有 効 化 します。データベースおよびそのマッピングが 定 義 された 後 に、 タグのコンテキスト 内 で、 タグを 使 用して、グローバルをロードし、ルーチンおよびクラスをロードしてコンパイルできます。クラス・メソッドは、 タグを 使 用 して 呼 び 出 せます。 呼 び 出 したクラス・メソッドは、ルーチンを 実 行 し、インポート 済 みのグローバルにアクセスできます。必 要 に 応 じて、 タグで 変 数 の 組 み 合 わせを 定 義 できます。 各 変 数 は、 名 前 と 値 を 指 定 する 必 要 があります。の 値 が 必 要 な 場 合 、その 名 前 が ${NameAssigned} 構 文 で 参 照 されます。使 用 例 は、この 章 で 後 述 する “ 例 ” を 参 照 してください。5.1.3 ユーザとパスワードの 追 加管 理 ポータルを 通 じてユーザ (ロールとパスワードを 含 めて) を 追 加 したり、 以 下 に 示 すように Caché や Ensemble のステージング・インスタンスで Security.Users クラスを 使 用 できます。1. Security.Users.Export() メソッドを 使 用 して、ユーザ 情 報 をエクスポートします。2. ユーザ 情 報 をインポートするには、(%SYS ネームスペースの) マニフェスト・クラスの 先 頭 で 以 下 を 追 加 します。PathToExportedUserInformation は、Security.Users.Export() メソッドで 指 定 された 出 力 ファイルの 場 所 です。 タグの PasswordVar パラメータで、ユーザのパスワードが 格 納 されている 変 数 を 指 定 します。PasswordVar="Pwd" と 定 義 することで、Pwd 変 数 の 値 がパスワードであることを 指 定 します。Pwd にデータを 移 入 する 方 法 は 多 様 ですが、 移 入 方 法 は 担 当 者 次 第 です。Caché または Web サービスの 別 のインスタンスに 対 してメソッドをリモートで 呼 び 出 すことも 検 討 できますが、この 方 法 の 問 題 点 は、Caché がインストールされているサーバでインターネット・アクセスが 必 要 な 場 合 があることです。インストールしているインスタンスに 対 して 使 用 するメソッドをインポートするか、ユーザとパスワード (マニフェストに 渡 すことができます) の 入 力 を 求 めるインストールにクライアント 側 フォームを 追 加 する 方 法 も 考 えられます。5.1.4 メッセージの 追 加クラスに タグを 組 み 込 むことで、 表 示 されるログ・メッセージを 定 義 できます。 例 えば、レベルが 3 以 下 のときに指 定 のテキストを 表 示 するには、クラスに 次 の タグを 含 めます。Caché 専 用 のシステム/ツールおよびユーティリティ 63


Caché のインストールと 配 布ログのレベルは 0 から 3 までの 範 囲 になる 必 要 があり (0 は “none (なし)”、3 は “verbose ( 詳 細 )”)、テキストは 32,000文 字 に 制 限 されます。setup() メソッドの 2 番 目 の 引 数 によりレベルを 設 定 します ( 詳 細 は、この 章 で 後 述 の “マニフェストの 使 用 ” を 参 照 )。これはインストールからマニフェストへ 渡 すことはできないため、 次 のようにクラスに 設 定 する 必 要 があります。ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3,pInstaller As %Installer.Installer,pLogger As %Installer.AbstractLogger)As %Status [ CodeMode = objectgenerator, Internal ]メッセージの 表 示 位 置 を setup() メソッドの 4 番 目 の 引 数 (%Installer.AbstractLogger) により 指 定 できます。 既 定 では、すべてのメッセージは cconsole.log ファイルに 書 き 込 まれます。 例 えば、オペレーティング・システム・ファイルを 参 照 する %Installer.FileLogger オブジェクトをインスタンス 化 する 場 合 、すべての %Installer およびログ・メッセージは cconsole.logファイルに 書 き 込 まれます。5.1.5 タグ以 下 にマニフェスト・クラスで 使 用 できるタグについて (アルファベット 順 に) 説 明 します。注 釈 表 示 の 値 は、 設 定 が 明 示 的 に 指 定 されていない 場 合 に 使 用 される 既 定 値 です。オプション。 の 内 側 で 使 用 します。ネームスペースのパッケージ・マッピングを 定 義 します。以 下 はその 例 です。オプション。 の 内 側 で 使 用 します。コンパイルするクラス 名 を 定 義 します。 以 下 はその 例 です。必 須 項 目 。 の 内 側 で 使 用 します。データベースまたはマッピング 用 のネームスペース 構 成 タグを 含 みます。 以 下 はその 例 です。終 了 タグ () は、ネームスペース 内 のデータベースのマッピングを 有 効 化 して、.cpf ファイルを 更 新 します。オプション。 の 内 側 で 使 用 します。ソースからターゲットにコピーするクラスを 定 義 します。 以 下はその 例 です。64 Caché 専 用 のシステム/ツールおよびユーティリティ


インストール・マニフェストの 作 成 および 使 用オプション。 の 内 側 で 使 用 します。ソースからターゲットにコピーするディレクトリを 定 義 します。 以下 はその 例 です。オプション。 の 内 側 で 使 用 します。ソースからターゲットにコピーするファイルを 定 義 します。 以 下はその 例 です。オプション。 の 内 側 で 使 用 します。1 つ 以 上 の CSP アプリケーションを 定 義 します。サポートされている 認 証 フラグは 4 (Kerberos)、32 (パスワード)、および 64 ( 認 証 なし) です。 以 下 はその 例 です。必 須 項 目 。 の 内 側 で 使 用 します。ネームスペースで 使 用 する 1 つ 以 上 のデータベースを定 義 します。 以 下 はその 例 です。Caché 専 用 のシステム/ツールおよびユーティリティ 65


Caché のインストールと 配 布オプション。 の 内 側 で 使 用 します。 指 定 されたインデックス・キーの 繰 り 返 しごとに 値 を 定 義 します。 以 下 はその 例 です。オプション。 の 内 側 で 使 用 します。ネームスペースのグローバル・マッピングを 定 義 します。以 下 はその 例 です。オプション。 または の 内 側 で 使 用 します。 条 件 を 定 義 します。 以 下 はその 例 です。オプション。 の 内 側 で 使 用 します。グローバル、ルーチン、およびパッケージがロードされる(ルーチンおよびパッケージがコンパイルされる) ように 定 義 します。 以 下 はその 例 です。オプション。 の 内 側 で 使 用 します。ルーチンを 実 行 するクラス・メソッドを 定 義 し、インポート 済 みのグローバルにアクセスします。 以 下 はその 例 です。この 後 "RetVal" は、 変 数 (${RetVal}) として 使 用 できます。オプション。 または の 内 側 で 使 用 します。 表 示 の 際 のログ・メッセージおよびログ・レベルを 定 義 します。 以 下 はその 例 です。必 須 項 目 。インストールの 指 示 ( 他 のすべてのタグ) が 含 まれます。 以 下 はその 例 です。66 Caché 専 用 のシステム/ツールおよびユーティリティ


インストール・マニフェストの 作 成 および 使 用必 須 項 目 。 の 内 側 で 使 用 します。ネームスペースごとに 1 つ 必 要 です。 以 下 はその 例 です。オプション。 の 内 側 で 使 用 します。リソースを 定 義 します。 以 下 はその 例 です。オプション。 の 内 側 で 使 用 します。ロールを 定 義 します。 以 下 はその 例 です。オプション。 の 内 側 で 使 用 します。ネームスペースのルーチン・マッピングを 定 義 します。以 下 はその 例 です。オプション。 の 内 側 で 使 用 します。Modify メソッドを 実 装 する 任 意 の Config クラスを 設 定 します。以 下 はその 例 です。オプション。 の 内 側 で 使 用 します。ユーザを 定 義 します。PasswordVar が 指 定 されていると、 参照 された 変 数 の 名 前 にユーザのパスワードを 指 定 する 必 要 があります。 以 下 はその 例 です。Caché 専 用 のシステム/ツールおよびユーティリティ 67


Caché のインストールと 配 布オプション。 の 内 側 で 使 用 します。マニフェストで 使 用 できる 変 数 を 定 義 します。 以 下 はその 例 です。ユーザ 定 義 のインストーラ・クラスの 総 合 的 な 例 については、SAMPLES ネームスペースの "Sample.Installer" を 参 照 してください。タグと 属 性 の 最 新 リストについては、%Installer クラス・リファレンス・ドキュメントを 参 照 してください。5.1.6 内 で 使 用 できる 変 数以 下 のテーブルに、 で 使 用 できる 変 数 を 示 します。変 数 名SourceDirISCUpgradeCFGDIRCFGNAMECPUCOUNTCSPDIRHOSTNAMEHTTPPORTINSTALLDIRMGRDIRPLATFORMPORTPROCESSORVERSION説 明(インストーラ 実 行 中 にのみ 使 用 可 能 ) インストール (setup_cache.exe または cinstall) の 実 行元 となるディレクトリ。(インストーラ 実 行 中 にのみ 使 用 可 能 ) 新 規 インストールまたはアップグレードであるかを 示 します。この 変 数 は 0 ( 新 規 インストール) または 1 (アップグレード) のいずれかになります。"INSTALLDIR" を 参 照 してください。インスタンス 名 。オペレーティング・システムの CPU の 数 。CSP ディレクトリ。ホスト・サーバの 名 前 。Web サーバのポート。Caché のインストール 先 ディレクトリ。管 理 者 用 (mgr) ディレクトリ。オペレーティング・システム。Caché のスーパーサーバ・ポート。プロセッサ・チップ。Caché のバージョン 番 号 。68 Caché 専 用 のシステム/ツールおよびユーティリティ


インストール・マニフェストの 作 成 および 使 用5.1.7 マニフェストの 使 用以 下 のように、マニフェストを 使 用 できます。• %SYS ネームスペースで Caché ターミナルに 以 下 のコマンドを 入 力 します。%SYS> Do ##class(MyPackage.MyInstaller).setup()配 列 を 参 照 として setup() メソッドに 渡 せます。ここで、 添 え 字 は、 の 変 数 として 使 用 され、ノード 値 は、変 数 です。 以 下 はその 例 です。%SYS> Set vars("SourceDir")="c:\myinstaller"%SYS> Set vars("Updated")="Yes"%SYS> Do ##class(MyPackage.MyInstaller).setup(.vars,3)2 番 目 の 引 数 (3) は、ログ・レベルです。• マニフェスト・クラスを DefaultInstallerClass.xml として Caché インストール (.msi、setup_cache.exe、またはcinstall) が 実 行 されているディレクトリにエクスポートします。%SYS にインポートされてコンパイルされ、setup() メソッドが 実 行 されます。注 釈エクスポートする 方 法 では、 引 数 を setup() メソッドに 渡 せません。Microsoft Windows システムでは、.msi インストール・パッケージを 変 更 して、 変 数 の 組 み 合 わせを setup()メソッドに 渡 せます。あるいは、 以 下 の 例 に 示 すようにコマンド 行 引 数 を 使 用 して、エクスポートされるマニフェスト・クラスおよび 変 数 の 場 所 を 渡 せます。setup_cache.exe INSTALLERMANIFEST="c:\MyStuff\MyInstaller.xml"INSTALLERMANIFESTPARAMS="SourceDir=c:\mysourcedir,Updated=Yes"UNIX® システムおよび Linux システムでは、 以 下 の 例 に 示 すように 環 境 変 数 を 設 定 して、エクスポートされるマニフェスト・クラスおよび 変 数 の 組 み 合 わせの 場 所 を 定 義 します。ISC_INSTALLER_MANIFEST=c:/MyStuff/MyInstaller.xmlISC_INSTALLER_PARAMETERS=SourceDir=c:/mysourcedir,Updated=Yescinstall5.1.8 例以 下 のクラスは、ネームスペース (MyNamespace) および 3 つのデータベースを 作 成 します。このうち 2 つのデータベースは、グローバル (MyDataDB) およびルーチン (MyRoutinesDB) の 既 定 のデータベースとして 定 義 され、3 番 目 のデータベース (MyMappingDB) は、MyNamespace ネームスペースにある t* グローバルの 既 定 のデータベース・マッピングをオーバーライドするグローバル・データベースです。注 釈総 合 的 な 例 については、SAMPLES ネームスペースの Sample.Installer を 参 照 してください。Include %occInclude/// Simple example of installation instructions (Manifest)Class MyInstallerPackage.SimpleManifest{XData SimpleManifest [ XMLNamespace = INSTALLER ]{


Caché のインストールと 配 布Dir="C:\MyInstallerDir\MyMappingDB"/>}/// This is a method generator whose code is generated by XGL.ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3,pInstaller As %Installer.Installer) As %Status[ CodeMode = objectgenerator, Internal ]{#; Let our XGL document generate code for this method.Quit ##class(%Installer.Manifest).%Generate(%compiledclass,%code, "SimpleManifest")}}クラスがコンパイルされた 後 、 以 下 に 示 すように、これを Caché ターミナルに 呼 び 出 せます (クラスを USER ネームスペースに 作 成 したことが 前 提 です)。%SYS> znspace "USER"USER> do ##class(MyInstallerPackage.SimpleManifest).setup()5.2 Windows プラットフォームでの 自 動 カスタム・インストールWindows 用 Caché の 自 動 インストール・ユーティリティを 使 用 して、ユーザのコンピュータに Caché のインスタンスを 自動 でカスタム・インストール、アップグレード、 再 インストール ( 修 復 )、および 削 除 (アンインストール) できます。 通 常 のインストール 操 作 の 場 合 、ユーザがダイアログ・ボックスに 必 要 な 情 報 を 入 力 し、この 情 報 からインストールを 実 行 します。しかし、 自 動 操 作 ではユーザの 入 力 が 求 められません。その 代 わりに、Windows® インストーラのコマンド 行 アプリケーション (msiexec) に 渡 されるプロパティから 入 力 を 取 得 します。 詳 細 は、このドキュメントの "コマンド 行 のリファレンス" のセクションを 参 照 してください。重 要Caché 自 動 インストール・ユーティリティを 使 用 するための 前 提 条 件 は、Microsoft Visual C++ 2008 ServicePack 1 再 頒 布 可 能 パッケージ ATL のセキュリティ 更 新 プログラム (http://www.microsoft.com/downloads/details.aspx?familyid=2051A0C1-C9B5-4B0A-A8F5-770A549FD78C)がインストール 済 みであることです。Caché をインストールするプラットフォームに 応 じて、 適 切 なパッケージをリンクからダウンロードしてインストールします。64 ビット・システムにインストールする 場 合 は、vcredist_x86.exe ファイルと 適 切 な 64 ビット・ファイル(vcredist_x64.exe または vcredist_IA64.exe) の 両 方 をインストールする 必 要 があります。Caché 自 動 インストールで 最 もよく 使 用 される Microsoft インストーラのコマンド 行 オプションは、/i、/qn、および /l です。msiexec の 詳 細 は、TechNet のドキュメント "Msiexec (コマンドライン オプション)" (http://technet.microsoft.com/enus/library/cc759262.aspx)を 参 照 してください。注 釈既 定 では、ログの 記 録 は 無 効 です。/l オプションを 指 定 すると、 既 存 のディレクトリのファイルにログ 情 報 が 書 き込 まれます。このセクションでは、 以 下 の 項 目 について 説 明 します。• 自 動 インストールの 実 行• 自 動 アップグレードの 実 行• 自 動 再 インストールの 実 行• 自 動 アンインストールの 実 行• コマンド 行 のリファレンス70 Caché 専 用 のシステム/ツールおよびユーティリティ


Windows プラットフォームでの 自 動 カスタム・インストール5.2.1 自 動 インストールの 実 行ログを 有 効 にして (/l) Caché の 新 しいインスタンスの 自 動 インストールを 開 始 するには、/qn コマンド 行 オプションを 指 定して msiexec /i を 実 行 します。msiexec /i \.msi /qn /l はインストールするパッケージのパス、.msi はインストールするパッケージ (cache_x86.msi、cache_x64.msi、cache_ia64.msi)、 ("コマンド 行 のプロパティ" のテーブルを 参 照 ) は 自 動 インストール・アプリケーションに 渡 すプロパティ ( 応 答 )、 はオプションのログ・ファイルの 名 前 ( 既 存 のパスを 含 む) です。注 釈自 動 モードでセットアップを 実 行 する 際 に、メッセージは 表 示 されません。複 数 のインスタンスをインストールする 場 合 、コマンド 行 で TRANSFORMS プロパティを 指 定 して、( 最 初 のインスタンスの 後 の) 各 インスタンスを 一 意 に 識 別 する 必 要 があります。さらに、 新 しいインスタンスをインストールする 場 合 、 以 下 のように、MSINEWINSTANCE プロパティも (1 に) 指 定 する 必 要 があります。msiexec /i ... TRANSFORMS=:instanceid.mst MSINEWINSTANCE=1ここで、:instanceid.mst は、Caché のインスタンスに 割 り 当 てるインスタンス 番 号 です。また 新 しいインストールでは、ユーザの PC を 起 動 するときに Caché が 起 動 されるように 構 成 されます。この 構成 を 変 更 するには、Windows インストーラの SERVICEAUTOSTART プロパティを 以 下 のように (0 に) 指 定 します。msiexec /i ... SERVICEAUTOSTART=0例 えば、 既 定 のインスタンス 名 cache を 使 用 して (ドライブ F: の DVD から) Caché のインスタンスをC:\InterSystems\Cache20091 というインストール・ディレクトリにインストールする 場 合 、32 ビット・プロセッサ PC(cache_x86.msi パッケージ) では、 以 下 を 指 定 します。msiexec /i F:\nt\cache_x86.msi /qn INSTALLDIR=C:\InterSystems\Cache20091また、 機 能 のサブセットをカスタム・インストールすることもできます ("コマンド 行 のプロパティ" のテーブルの "ADDLOCAL"プロパティを 参 照 )。 例 えば、 既 定 のインスタンス 名 と 32 ビット・プロセッサ PC (cache_x86.msi パッケージ) の 既 定 のインストール・ディレクトリを 使 用 するインストールで、ランチャーと PDF 版 のドキュメントのみをインストールする 場 合 、 以 下 のように 指 定 します。msiexec /i F:\nt\cache_x86.msi /qn ADDLOCAL=cube,documentation,documentation_pdf5.2.2 自 動 アップグレードの 実 行Windows インストーラでは、Caché のインスタンスをアップグレードするか 再 インストールするかを 決 定 します。コマンド 行で 指 定 したパッケージ .msi のバージョンがインストールされているバージョンと 同 じ 場 合 、インストーラはCaché のインスタンスを 再 インストール ( 修 復 ) します。しかし、パッケージのバージョンがインストールされているバージョンより 新 しい 場 合 、インストーラは Caché のインスタンスを 新 しいバージョンにアップグレードします。Caché のインスタンスをアップグレードする 場 合 、 古 いバージョン (2008.2 以 前 ) からアップグレードするかまたは 新 しいバージョン (2009.1 以 降 ) からアップグレードするかにより、コマンド 行 は 異 なります。この 違 いの 詳 細 は、 以 下 を 参 照 してください。• 2009.1 より 前 のリリースからのアップグレード• 2008.2 より 後 のリリースからのアップグレードCaché 専 用 のシステム/ツールおよびユーティリティ 71


Caché のインストールと 配 布5.2.2.1 2009.1 より 前 のリリースからのアップグレードログを 有 効 にして (/l) 2008.2 またはそれ 以 前 のバージョンから 現 在 のリリースにアップグレードするには、 以 下 のように/qn コマンド 行 オプションと INSTANCENAME プロパティを 指 定 して msiexec /i を 実 行 します。msiexec /i \.msi /qn INSTANCENAME= /l ここで、 はインストールするパッケージのパス、.msi はインストールするパッケージ (cache_x86.msi、cache_x64.msi、cache_ia64.msi)、 は 2009.1 より 前 のアップグレードするインスタンスの 名 前 、 はオプションのログ・ファイルの 名 前 ( 既 存 のパスを 含 む) です。注 釈自 動 モードでアップグレードを 実 行 する 際 に、メッセージは 表 示 されません。例 えば、MyCache という 名 前 のバージョン 2008.2 の Caché インスタンスをアップグレードするには、 以 下 のように 指 定します。msiexec /i F:\nt\cache_x86.msi /qn INSTANCENAME=MyCache5.2.2.2 2008.2 より 後 のリリースからのアップグレードバージョン 2009.1 またはそれ 以 降 から 現 在 のリリースにアップグレードする 場 合 、アップグレードの 対 象 が 最 初 または 唯一 のインスタンスであるのか 特 定 のインスタンスであるのかによって、コマンドの 形 式 が 異 なります。注 釈自 動 モードでアップグレードを 実 行 する 際 に、メッセージは 表 示 されません。ログを 有 効 にして (/l) Caché の 最 初 のインスタンスまたは 唯 一 のインスタンスをアップグレードするには、 以 下 のように/qn コマンド 行 オプションを 指 定 して msiexec /i を 実 行 します。msiexec /i \.msi /qn /l ここで、 はインストールするパッケージのパス、.msi はインストールするパッケージ (cache_x86.msi、cache_x64.msi、cache_ia64.msi)、 はオプションのログ・ファイルの 名 前 ( 既 存 のパスを 含 む) です。例 えば、インストールされているバージョン 2009.1 の Caché のインスタンスのみをアップグレードするには、 以 下 のように 指 定 します。msiexec /i F:\nt\cache_x86.msi /qn特 定 の Caché のインスタンスをアップグレードするには、 以 下 のように /qn コマンド 行 オプションと TRANSFORMS および MSINEWINSTANCE プロパティを 指 定 して msiexec /i を 実 行 します。msiexec /i \.msi /qn TRANSFORMS=:instanceid.mst MSINEWINSTANCE=1このコマンドでは、path はインストールするパッケージのパス、product.msi はインストールするパッケージ (cache_x86.msi、cache_x64.msi、cache_ia64.msi) であり、:instanceidN.mst はアップグレードするインスタンスのローカル・インスタンス 番号 を 示 しています。 後 者 は 以 下 のレジストリ・キーの 値 の 中 で 確 認 できます。Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Intersystems\Cache\Configurations\instance_name\TRANSFORMSinstance_name はアップグレードするインスタンスの 名 前 です。このキーの 値 は 2 つの 部 分 から 成 り、 最 初 の 部 分 は:instanceid.mst の 形 式 となります。例 えば、アップグレードするインスタンス 用 レジストリ・キーの 値 の 最 初 の 部 分 が :instanceid2.mst である 場 合 、 以下 を 指 定 します。msiexec /i F:\nt\cache_x86.msi /qn TRANSFORMS=:instanceid2.mst MSINEWINSTANCE=172 Caché 専 用 のシステム/ツールおよびユーティリティ


Windows プラットフォームでの 自 動 カスタム・インストール5.2.3 自 動 再 インストールの 実 行ログを 有 効 にして (/l) 自 動 再 インストールを 起 動 するには、/qn コマンド 行 オプションを 指 定 して msiexec /i を 実 行 します。msiexec /i \.msi /qn REINSTALL= /l ここで、 は Caché をインストールしたときに 使 用 したパッケージのパス、.msi はインストールしたパッケージ (cache_x86.msi、cache_x64.msi、cache_ia64.msi)、 は 機 能 のリスト (あらかじめインストールされている 機 能 をすべて 再 インストールする 場 合 は ALL)、 はオプションのログ・ファイルの 名 前 ( 既 存 のパスを 含 む)です。注 釈自 動 モードで 再 インストールを 実 行 する 際 に、メッセージは 表 示 されません。例 えば、Caché の 単 一 のインスタンスのあらかじめインストールされているすべての 機 能 (インスタンス 変 換 を 使 用 せず、ドライブ F: の DVD からインストールされたもの) を 再 インストール ( 修 復 ) する 場 合 、 以 下 のように 指 定 します。msiexec /i F:\nt\cache_x86.msi /qn REINSTALL=ALLしかし、インスタンス 変 換 を 使 用 して 複 数 の Caché インスタンスがインストールされている 場 合 、:instanceid2.mst としてインストールされている Caché の 特 定 のインスタンスを 再 インストールするには、 以 下 のようにインスタンス 変 換 を 指定 します。msiexec /i F:\nt\cache_x86.msi /qn TRANSFORMS=:instanceid2.mst REINSTALL=ALLまたは、あらかじめインストールされている Caché のインスタンスに、 機 能 のサブセットを 再 インストール ( 修 復 ) することができます。 例 えば、インスタンス 変 換 を 使 用 せずに 32 ビット・プロセッサ PC (cache_x86.msi パッケージ) の 既 定 のインストール・ディレクトリにインストールされている Caché の 単 一 のインスタンスがあるインストールで、オンライン 版 のドキュメントを 再 インストールする 場 合 、 以 下 のように 指 定 します。msiexec /i F:\nt\cache_x86.msi /qn REINSTALL=documentation,documentation_online5.2.4 自 動 アンインストールの 実 行ログを 有 効 にして (/l) 自 動 アンインストールを 起 動 するには、/qn コマンド 行 オプションを 指 定 して msiexec /x を 実 行 します。msiexec /x \.msi /qn /l ここで、 は Caché をインストールしたときに 使 用 したパッケージのパス、.msi はインストールしたパッケージ (cache_x86.msi、cache_x64.msi、cache_ia64.msi)、 はオプションのログ・ファイルの 名 前 ( 既 存 のパスを含 む) です。注 釈自 動 モードでアンインストールを 実 行 する 際 に、メッセージは 表 示 されません。例 えば、インスタンス 変 換 が 使 用 されていない Caché のインスタンスをアンインストールするには、 以 下 のように 指 定 します。msiexec /x F:\nt\cache_x86.msi /qnしかし、インスタンス 変 換 を 使 用 して 複 数 の Caché インスタンスがインストールされている 場 合 、:instanceid2.mst としてインストールされている Caché の 特 定 のインスタンスをアンインストールするには、 以 下 のようにインスタンス 変 換 を指 定 します。msiexec /x F:\nt\cache_x86.msi /qn TRANSFORMS=:instanceid2.mstCaché 専 用 のシステム/ツールおよびユーティリティ 73


Caché のインストールと 配 布または、/i コマンド 行 オプションと REMOVE プロパティを 使 用 して、Caché のインスタンス、またはインスタンスにインストールされた 機 能 のサブセットを 削 除 できます。msiexec /i \.msi /qn REMOVE=ここで、 は Caché をインストールしたときに 使 用 したパッケージのパス、.msi はアンインストールするパッケージ (cache_x86.msi、cache_x64.msi、cache_ia64.msi)、 は 削 除 する 機 能 のリスト (または、インスタンスを 削 除 する 場 合 は ALL) です。 例 えば、インスタンス 変 換 を 指 定 せず 単 一 の Caché のインスタンスをインストールした 場 合 、 以 下 のコマンド 行 によりこれを 削 除 します。msiexec /i F:\nt\cache_x86.msi /qn REMOVE=ALLここで、cache_x86.msi はアンインストールする Caché 製 品 の 名 前 です。インスタンス 変 換 を 使 用 して Caché インスタンスをインストールしている 場 合 、 以 下 のコマンド 行 により、:instanceid2.mstとしてインストールされている Caché の 特 定 のインスタンスを 削 除 します。msiexec /i F:\nt\cache_x86.msi /qn TRNSFORMS=:instanceid2.mst REMOVE=ALL5.2.4.1 特 別 な 考 慮 事 項元 のインストール・パッケージにアクセスできない 場 合 は、レジストリの 情 報 を 使 用 して 自 動 モードでアンインストールを 実行 できます。ログを 有 効 にして (/l) 自 動 アンインストールを 起 動 するには、/qn コマンド 行 オプションを 指 定 して msiexec /x を 実 行 します。msiexec /x {} /qn /l ここで、 はインストールしたパッケージ (cache_x86.msi、cache_x64.msi、cache_ia64.msi) の [ProductCode]プロパティ 値 、 はオプションのログ・ファイルの 名 前 ( 既 存 のパスを 含 む) です。注 釈自 動 モードでアンインストールを 実 行 する 際 に、メッセージは 表 示 されません。ProductCode プロパティ 値 の 取 得レジストリ 内 の [ProductCode] プロパティ 値 を 取 得 します。• 32 ビットのマシンでは、レジストリ 場 所 としてHKEY_LOCAL_MACHINE\SOFTWARE\Intersystems\Cache\Configurations\ に 移 動 します。• 64 ビットのマシンでは、レジストリ 場 所 としてHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Intersystms\Cache\Configurations\に 移 動 します。ここで は、 自 動 モードでアンインストールする Caché インスタンスの 名 前 です。[ProductCode] プロパティ 値は、 以 下 のように 行 に 表 示 されます。ProductCode REG_SZ {80E3F658-2D74-4A81-92AD-FD16CD226154}例 えば、Caché のインスタンスを 自 動 モードでアンインストールするには、 以 下 のように 指 定 します。msiexec /x {80E3F658-2D74-4A81-92AD-FD16CD226154} /qn5.2.5 コマンド 行 のリファレンス"コマンド 行 のプロパティ" のテーブルでは、コマンド 行 インタフェースを 使 用 して 変 更 できる Caché 固 有 の 自 動 インストールのプロパティについて 説 明 します。プロパティ 名 は 大 文 字 で 指 定 する 必 要 がありますが、 引 数 では 大 文 字 / 小 文74 Caché 専 用 のシステム/ツールおよびユーティリティ


Windows プラットフォームでの 自 動 カスタム・インストール字 の 区 別 はありません。それぞれのプロパティは 1 つ 以 上 の 空 白 で 区 切 り、PROPERTYNAME=argument という 形 式 で指 定 します。 指 定 の 順 序 は 問 われません。 以 下 はその 例 です。... CACHEUSERPASSWORD=f00bar INSTANCENAME=Cache2009 INITIALSECURITY=Normalさらに、Caché のインスタンスを 複 数 インストールする 場 合 、それらのインスタンスを 識 別 する 必 要 があります。Windowsインストーラには、インスタンス 変 換 を 使 用 して 複 数 のインスタンスをインストールする 機 能 があります。Caché キットに 埋め 込 まれるインスタンス 変 換 は、:instanceid1.mst ~ :instanceid127.mst の127 個 あります。Caché 自 動 インストールでは、TRANSFORMS 引 数 は :instanceid.mst という 形 式 を 取 ります。ここで、コロン (:)はこの 変 換 がパッケージに 埋 め 込 まれることを 示 し、N は 1 ~ 127 の 範 囲 内 の 番 号 です ( 例 : :instanceid101.mst)。また、 新 しいインスタンスをインストールする 場 合 、コマンド 行 で Windows インストーラのプロパティ MSINEWINSTANCE=1も 指 定 する 必 要 があります。 例 えば、:instanceid1.mst という Caché の 2 番 目 のインスタンスをインストールする 場合 、コマンド 行 では 次 のように 指 定 します。... TRANSFORMS=:instanceid1.mst MSINEWINSTANCE=1 ...注 釈Caché では、システムに 最 大 128 のインスタンスをインストールできます。Caché のインスタンスを 最 初 にインストールするとき、またはそのインスタンスのみをインストールするとき、インスタンス 変 換 を 使 用 する 必 要 はありませんが、その 他 すべてのインスタンスは TRANSFORMS プロパティで 一 意 に 識 別 される 必 要 があります。テーブル 5–1: コマンド 行 のプロパティプロパティ 名ADDLOCAL説 明このプロパティを 使 用 して、Caché 機 能 をインストールします。• すべての 機 能 をインストールするには、ALL と 指 定 します。• Caché 機 能 ("カスタム・インストール 可 能 な 機 能 " のテーブルを 参 照 )のサブセットをカスタム・インストールするには、featurename のコンマ区 切 りリストをグループ 名 と 共 に 指 定 します (このテーブルに 続 く 例 を 参照 )。注 釈既 定 は ALL です。また、このテーブルの “REINSTALL” および “REMOVE” プロパティも 参照 してください。CACHESERVICEDOMAINこのプロパティは、サービスの 資 格 情 報 が UserDefined に 定 義 されている 場 合 に 必 要 になります。このテーブルの “SERVICECREDENTIALS” プロパティを 参 照 してください。このプロパティを 使 用 して、Windows の Cachéサービス・ログイン・アカウントに 使 用 するドメインを 指 定 します。注 釈 サービスの 資 格 情 報 が LocalSystem と 指 定 されている 場 合 は、このプロパティを 使 用 しないでください。CACHESERVICEPASSWORDこのプロパティは、サービスの 資 格 情 報 が UserDefined に 定 義 されている 場 合 に 必 要 になります。このテーブルの “SERVICECREDENTIALS” プロパティを 参 照 してください。このプロパティを 使 用 して、Windows の Cachéサービス・ログイン・アカウントに 使 用 するパスワードを 指 定 します。注 釈 サービスの 資 格 情 報 が LocalSystem と 指 定 されている 場 合 は、このプロパティを 使 用 しないでください。Caché 専 用 のシステム/ツールおよびユーティリティ 75


Caché のインストールと 配 布プロパティ 名CACHESERVICEUSER説 明このプロパティは、サービスの 資 格 情 報 が UserDefined に 定 義 されている 場 合 に 必 要 になります。このテーブルの “SERVICECREDENTIALS” プロパティを 参 照 してください。このプロパティを 使 用 して、Windows の Cachéサービスの 実 行 に 使 用 するユーザ 名 を 指 定 します。注 釈 サービスの 資 格 情 報 が LocalSystem と 指 定 されている 場 合 は、このプロパティを 使 用 しないでください。CACHEUSERPASSWORDこのプロパティは、セキュリティ・レベルが Normal または Locked Downの 場 合 に 必 要 になります。このテーブルの “INITIALSECURITY” プロパティを 参 照 してください。このプロパティを 使 用 して、Caché パスワードを 指 定 します。注 釈初 期 セキュリティ・レベルが None の 場 合 は、このプロパティを 使用 しないでください。INITIALSECURITYこのプロパティを 使 用 して、インストールされるインスタンスで 使 用 されるセキュリティ・レベルを 指 定 します。None、Normal、または Locked Down を指 定 するか、 既 定 を 受 け 入 れます。注 釈既 定 は None です。また、このテーブルの “CACHEUSERPASSWORD” プロパティおよび“SERVICECREDENTIALS” プロパティも 参 照 してください。INSTALLDIRこのプロパティを 使 用 して、インスタンスをインストールするディレクトリを 指定 します。install-dir を 指 定 するか、 既 定 を 受 け 入 れます。注 釈既 定 のディレクトリは、C:\InterSystems\CACHEn です。ここで、nは、{empty}、1、2、... 127 です。INSTALLERMANIFESTINSTALLERMANIFESTPARAMSINSTANCENAMEこのプロパティを 使 用 して、インストール・マニフェスト (つまり、エクスポートしたマニフェスト・クラス) のディレクトリおよびファイル 名 を 指 定 します。 詳 細は、この 章 で 後 述 する “マニフェストの 使 用 法 ” を 参 照 してください。このプロパティを 使 用 して、 変 数 の 名 前 と 値 の 組 み 合 わせを 指 定 し、マニフェスト・クラスの setup() メソッドの 最 初 の 引 数 に 渡 します。 詳 細 は、この 章で 後 述 する “マニフェストの 使 用 法 ” を 参 照 してください。このプロパティを 使 用 して、インストールされるインスタンスで 使 用 されるインスタンス 名 を 指 定 します。name を 指 定 するか、 既 定 を 受 け 入 れます。注 釈既 定 のインスタンス 名 は、 最 初 に 使 用 可 能 な CACHEn です。ここで、n は {empty}、1、2、... 127 です。また、このテーブルの “REINSTALL” および “REMOVE” プロパティも 参照 してください。76 Caché 専 用 のシステム/ツールおよびユーティリティ


Windows プラットフォームでの 自 動 カスタム・インストールプロパティ 名REINSTALL説 明このプロパティを 使 用 して、Caché のインスタンス、または 指 定 された Cachéのインスタンスにカスタム・インストールされた 機 能 を 修 復 ( 再 インストール)します。• インスタンスにインストールされた 機 能 が、カスタム・インストールされた機 能 のサブセットでもすべての 機 能 でも、 機 能 を 再 インストールするには、ALL と 指 定 します。• Caché 機 能 ("カスタム・インストール 可 能 な 機 能 " のテーブルを 参 照 )のサブセットを 再 インストールするには、featurename のコンマ 区 切 りリストをグループ 名 と 共 に 指 定 します (このテーブルに 続 く 例 を 参 照 )。注 釈複 数 のインスタンスがインストールされているとき、このプロパティを 使 用 する 場 合 は、 修 復 する INSTANCENAME を 指 定 する 必 要があります (このテーブルの “INSTANCENAME” プロパティを 参照 )。また、このテーブルのこのテーブル 属 性 の “ADDLOCAL” および“REMOVE” プロパティも 参 照 してください。REMOVEこのプロパティを 使 用 して、Caché のインスタンス、または 指 定 された Cachéのインスタンスにカスタム・インストールされた 機 能 をアンインストール ( 削除 ) します。• Caché のインスタンスを 削 除 するには、ALL と 指 定 します。• Caché 機 能 ("カスタム・インストール 可 能 な 機 能 " のテーブルを 参 照 )のサブセットを 削 除 するには、featurename のコンマ 区 切 りリストをグループ 名 と 共 に 指 定 します (このテーブルに 続 く 例 を 参 照 )。注 釈複 数 のインスタンスがインストールされているとき、このプロパティを 使 用 する 場 合 は、 削 除 する INSTANCENAME を 指 定 する 必 要があります (このテーブルの “INSTANCENAME” プロパティを 参照 )。また、このテーブルのこのテーブル 属 性 の “ADDLOCAL” および“REINSTALL” プロパティも 参 照 してください。Caché 専 用 のシステム/ツールおよびユーティリティ 77


Caché のインストールと 配 布プロパティ 名SERVICECREDENTIALS説 明このプロパティは、セキュリティ・レベルが Normal または Locked Downの 場 合 に 必 要 になります。このテーブルの “INITIALSECURITY” プロパティを 参 照 してください。このプロパティを 使 用 して、ユーザが Caché サービスにログオンする 際 に 必 要 な 資 格 情 報 のタイプを 指 定 します。 有 効 なタイプは、LocalSystem ( 既 定 のシステム・アカウント。これにより、Caché をWindows ローカル・システム・アカウントとして 実 行 します) またはUserDefined ( 定 義 された Windows ユーザ・アカウント。これにより、ユーザは Caché の 管 理 に 必 要 なサービスにアクセスできます) です。UserDefined を 選 択 した 場 合 、“CACHESERVICEDOMAIN”、“CACHESERVICEPASSWORD”、および “CACHESERVICEUSER” プロパティも 指 定 する 必 要 があります。このテーブルのそれぞれの 項 目 を 参 照 してください。注 釈既 定 は LocalSystem です。 初 期 セキュリティ・レベルが Noneの 場 合 は、このプロパティを 使 用 しないでください。SUPERSERVERPORTこのプロパティを 使 用 して、インストールされるインスタンスで 使 用 されるスーパーサーバ・ポートを 指 定 します。ポートを 指 定 するか、 既 定 を 受 け 入 れます。注 釈既 定 では、このポートは 自 動 的 に 検 出 されます。 最 初 は 1972 ( 使用 可 能 な 場 合 )、 次 は 56773 で、 以 降 はインストールされた Cachéのインスタンスごとに 1 ずつ 増 加 します。UNICODEこのプロパティを 使 用 して、インストールされるインスタンスでサポートされる Unicode 文 字 が 8 ビットか 16 ビットかを 指 定 します。8 ビット 文 字 の 場 合は 0 を 指 定 し、16 ビット 文 字 の 場 合 は 1 を 指 定 します。注 釈既 定 では、0 は 中 国 語 、 韓 国 語 、 日 本 語 以 外 のすべての 言 語 用に 指 定 されます。 既 定 では、1 は 中 国 語 、 韓 国 語 、および 日 本 語のシステム 用 に 指 定 されます。WEBSERVERPORTこのプロパティを 使 用 して、インストールされるインスタンスで 使 用 されるWeb サーバのポートを 指 定 します。注 釈 既 定 では、このポートは 自 動 的 に 検 出 されます。 最 初 は 57772で、インストールされた Caché のインスタンスごとに 1 ずつ 増 加 します。"カスタム・インストール 可 能 な 機 能 " のテーブルには、コンポーネント・グループ/コンポーネント 名 とそれぞれに 関 連 付けられた featurename が 示 されています。“ALL” ( 使 用 可 能 なすべての 機 能 を 指 定 ) または 機 能 名 のコンマ 区 切 りリスト ( 空 白 なし、 個 々の 機 能 を 指 定 ) を 指 定 できます。ADDLOCAL/REINSTALL/REMOVE プロパティ ("コマンド 行 のプロパティ" のテーブルを 参 照 ) のコンポーネントを 指 定するには、コンポーネント・グループ 列 のコンポーネントの featurename の 後 に、コンポーネント 列 の 特 定 コンポーネントの featurename を 付 けて 指 定 します。例 えば、PDF ドキュメントのみをインストールする 場 合 、コマンド 行 で 以 下 を 指 定 します。... ADDLOCAL=documentation,documentation_pdf ...78 Caché 専 用 のシステム/ツールおよびユーティリティ


Windows プラットフォームでの 自 動 カスタム・インストール注 釈コンポーネントが 関 連 付 けられていない cube と studio を 除 いて、コンポーネント・グループを 指 定 する 際 、 関連 付 けられたコンポーネントも 1 つ 以 上 指 定 する 必 要 があります。コンポーネントがコンポーネント・グループでリストされていないと、コンポーネント・グループは 無 視 されます。 例 えば、...ADDLOCAL=documentation,documentation_pdf,sqltools,development, ... と 指 定 すると、sqltools コンポーネント・グループは 無 視 され、サーバ・コンポーネントはインストールされません。テーブル 5–2: カスタム・インストール 可 能 な 機 能コンポーネント・グループ ( 機 能 名 )サーバ (server)コンポーネント ( 機 能 名 )Samples データベース (server_samples)User データベース (server_user)SQL ゲートウェイ (sqlgateway)Apache Formatting Objects Processor (fop)サーバ 監 視 ツール (server_monitoring)Zen レポート 用 HotJVM RenderServer/QueuingRenderServer (renderserver)エージェント・サービス (agent_service)注 釈Ensemble および HealthShare のみ : ENSDemo データベース(server_ensdemo)ランチャー (cube)スタジオ (studio)xDBC (sqltools)開 発 (development)ドキュメント (documentation)ODBC (odbc)JDBC (jdbc)C++ バインディング (cppbind)Light C++ バインディング (lcbind)C++ SDK (cppsdk)コールイン (callin)Perl バインディング (perlbind)Python バインディング (pythonbind)Java (javabind).NET バインディング (dotnetbind)スレッド・サーバ・ライブラリ (server_threaded)ActiveX 接 続 (activex)その 他 のサンプル (other_samples)PDF ドキュメント (documentation_pdf)オンライン・ドキュメント (documentation_online)Caché 専 用 のシステム/ツールおよびユーティリティ 79


Caché のインストールと 配 布コンポーネント・グループ ( 機 能 名 )CSP ゲートウェイ (cspgateway)コンポーネント ( 機 能 名 )IIS (cspiis)Apache 2.0 (cspapache20)Apache 2.2 (cspapache22)5.3 Caché ディストリビューションへの UNIX® インストール・パッケージの 追 加このセクションでは、 既 存 の Caché ディストリビューションに UNIX® インストール・パッケージを 追 加 する 方 法 を 説 明 します。この 追 加 方 法 はチュートリアル 形 式 で 示 し、Caché インスタンス・ディレクトリに 追 加 ファイルをコピーする 単 純 なパッケージを 作 成 する 場 合 について 解 説 します。注 釈インストール・パッケージは UNIX® シェル・スクリプトを 使 用 して 実 装 するため、これよりはるかに 複 雑 な 操 作 を実 行 するパッケージも 作 成 できます。Foo9000 という 名 前 のイメージング・デバイスに 接 続 する Caché コールアウト 共 有 ライブラリ ("Caché コールインおよびコールアウト 関 数 の 使 用 法 " の “Caché の 外 部 呼 び 出 し” を 参 照 ) を 作 成 したとします。このライブラリを libfoo9000.soとしてコンパイルします。このライブラリが Caché と 共 にインストールされるようにしたいとします。また、インストール 時 に、このライブラリの 接 続 先 デバイス (Foo9000) のネットワーク・サーバ 名 を 入 力 するようにユーザに 求 めるプロンプトが 表 示されるようにする 必 要 もあります。この 情 報 は Caché インスタンス・マネージャのディレクトリ (install-dir\mgr) 内 の 構 成ファイルに 保 存 されるようにします。既 存 の Caché キットから 開 始 します。~/kit:>lscinstall cplatname docs lgpl.txt NOTICEcopyright.pdf dist kitlist LICENSE package... また、コンパイルしたライブラリ (libfoo9000.so) を 使 用 します。~/lib:>lslibfoo9000.soまず、ライブラリを 保 存 するキット 内 の 場 所 を 選 択 し、その 場 所 にライブラリをコピーする 必 要 があります。 規 約 により、プラットフォーム 別 のライブラリは dist/package/platform ディレクトリ (~/kit/dist/foo9000/lnxsusex64 など) に 保 存 します。~/kit:>cd dist~/kit/dist:>mkdir foo9000~/kit/dist:>cd foo9000~/kit/dist/foo9000:>mkdir lnxsusex64~/kit/dist/foo9000:>cd lnxsusex64~/kit/dist/foo9000/lnxsusex64:>cp ~/lib/libfoo9000.so .次 に、インストール・パッケージのディレクトリを 作 成 し、パッケージについて 記 述 する manifest.isc ファイルをこのディレクトリに 追 加 します。 最 も 単 純 な 形 式 の manifest.isc ファイルでは、パッケージ 名 のみを 記 述 します。この 名 前 はパッケージ・ディレクトリの 名 前 (foo9000) と 一 致 させる 必 要 があります。~/kit/package:>mkdir foo9000~/kit/package:>cd foo9000~/kit/package/foo9000:>emacs manifest.iscpackage: foo9000パッケージ 内 が 空 だと 処 理 は 何 も 実 行 されませんが、このチュートリアルでは、 次 の 処 理 を 実 行 する 必 要 があります。1. Foo9000 をホストするサーバ 名 の 入 力 をユーザに 求 めるプロンプトを 表 示 する。80 Caché 専 用 のシステム/ツールおよびユーティリティ


Caché ディストリビューションへの UNIX® インストール・パッケージの 追 加2. マネージャのディレクトリ (install-dir\mgr) 内 の 構 成 ファイルにこの 情 報 を 保 存 する。3. インスタンス・バイナリ・ディレクトリにライブラリ (libfoo9000.so) をコピーする。パッケージ・インストーラは 複 数 のフェーズで 処 理 を 実 行 します。そのうち 重 要 なフェーズは 次 のフェーズです。• “parameters” フェーズ• “install” フェーズ注 釈パッケージには、フェーズごとに、それぞれのフェーズの 名 前 を 持 つ Bourne シェル・スクリプトを 格 納 することができます。パッケージ・インストーラは、フェーズ 内 の 適 切 な 時 点 で、 各 パッケージのスクリプトを 実 行 します。パッケージのスクリプトで 所 定 のフェーズの 実 行 が 正 常 に 終 了 すると、 最 終 コマンドによって 明 示 的 または 暗 黙的 にエラー・コード 0 が 返 されます。 正 常 に 終 了 しなかった 場 合 は、0 以 外 のエラー・コードが 返 されます。“parameters” フェーズでは、パッケージのインストールに 必 要 な 情 報 を ( 通 常 ユーザに 入 力 を 求 めることによって) 収集 します。このフェーズでは、システムへの 永 続 的 な 変 更 は 行 いません。 通 常 、“parameters” フェーズ 後 に、ユーザがインストールの 取 り 消 しを 必 要 に 応 じて 選 択 できるようにします。 取 り 消 しが 選 択 された 場 合 、システムがインストール・プロセスによる 影 響 を 何 も 受 けていない 状 態 になっていなければなりません。“install” フェーズでは、システムを 変 更 します。 無 人 インストールや 自 動 インストールが 実 行 される 場 合 があるため、install フェーズ 中 はユーザに 情 報 の 入 力 を 求 めないようにします。パッケージによっては、ユーザからの 情 報 の 入 力 が 不 要 、つまり “parameters” スクリプトが 不 要 な 場 合 があります。 特定 のフェーズのスクリプトがパッケージに 含 まれていない 場 合 、そのフェーズ 中 、そのパッケージの 処 理 は 何 も 実 行 されません。まず、foo9000 パッケージ 用 の “parameters” スクリプトとして、 次 のようなスクリプトを 作 成 したとします。~/kit/package/foo9000:>emacs parameters#!/bin/shecho "Please enter host name of the Foo9000 imaging server: "read hostecho "Host $host entered."このスクリプトを 実 行 すると、 次 のように、ホスト 名 の 入 力 を 求 めるプロンプトが 実 際 に 表 示 されます。この 情 報 は host 変数 に 記 録 されます。~/kit/package/foo9000:>sh parametersPlease enter host name of the Foo9000 imaging server:cupertinoHost cupertino entered.しかし、host 値 を 取 得 した 後 、この 値 をどう 処 理 したらいいでしょうか。スクリプトの 実 行 が 終 了 すると、この 情 報 は 失 われるため、“install” フェーズでこの 情 報 を 構 成 ファイルに 書 き 込 む 必 要 が 生 じたときに 利 用 できません。注 釈“parameters” フェーズではユーザのシステムに 何 の 影 響 も 及 ぼさないようにするため、この 時 点 ではまだ 構成 ファイルを 作 成 しません。パッケージ・インストーラは、 複 数 のフェーズや 複 数 のパッケージで 情 報 を 共 有 できるようにする 便 利 な 関 数 のペア –Import と Export – を 備 えています。 通 常 のシェル・スクリプトのメカニズムによって、これらの 関 数 を parameters.includeファイルに 組 み 込 んで 使 用 できます。#!/bin/sh. parameters.includeecho "Please enter host name of the Foo9000 imaging server: "read hostecho "Host $host entered."Export foo9000.host $hostExport 関 数 は、エクスポートする ( 通 常 、スクリプトのローカル 変 数 から) パラメータ 変 数 の 名 前 とその 値 を 取 ります。Import関 数 ではこの 逆 になります。 最 初 の 引 数 には、あらかじめエクスポートされている 値 のインポート 先 のローカル 変 数 を 指定 し、2 番 目 の 引 数 には、エクスポート 先 のパラメータ 変 数 の 名 前 を 指 定 します。Caché 専 用 のシステム/ツールおよびユーティリティ 81


Caché のインストールと 配 布注 釈規 約 により、パラメータ 関 数 の 名 前 は、package name.local variable name 形 式 の 名 前 (foo9000.host など) にします。これで、インストール・プロセスに 必 要 なすべての Foo9000 情 報 が “parameters” スクリプトで 収 集 されるようになったため、 次 は “install” スクリプトを 作 成 します。~/kit/package/foo9000:>emacs parameters#!/bin/sh. parameters.includeImport host foo9000.hostecho host=$host > ????/mgr/foo9000.cfgcp ????/dist/foo9000/????/libfoo9000.so ????/bin以 下 の 詳 細 を 指 定 する 必 要 があります ( 上 記 スクリプトの ???? の 部 分 )。• インストールを 作 成 するインスタンス・ディレクトリの 場 所 。• インストール 元 のキットの 場 所 。• インストールするプラットフォームの 種 類 。これらの 質 問 は “parameters” スクリプトに 組 み 込 むこともできますが、ユーザはこれらの 情 報 をインストールの 初 期 段階 で 既 に 入 力 しているため、 混 乱 を 招 く 可 能 性 があります。 代 わりに、 必 要 な 情 報 を 提 供 する 他 のパッケージからパラメータ 変 数 をインポートします。これが 可 能 なのは、cinstall、cinstall_client、または cinstall_silent スクリプトを 使 用 したインストールが 成 功 すると ("Caché インストール・ガイド" の “UNIX® および Linux への Caché のインストール” の 章 を参 照 )、parameters.isc ファイルが 作 成 されるからです。このファイルは、インストール・ディレクトリにあり、 変 数 と 値 が 含 まれます。parameters.isc ファイルの 変 数 の 一 覧 は、この 章 の 最 後 のテーブルに 掲 載 します。注 釈セキュリティ 上 の 理 由 により、parameters.isc ファイルには root ユーザのみがアクセスできます。特 定 のパッケージのパラメータ 変 数 を 使 用 するためには、 現 在 のパッケージ (foo9000) が 別 のパッケージに 依 存 すること、したがって 各 フェーズで 別 のパッケージの 後 に 処 理 する 必 要 があることを、パッケージ・インストーラに 認 識 させる 必要 があります。それには、 現 在 のパッケージの manifest.isc ファイルに “prerequisite” の 各 値 を 次 のように 追 加 します。~/kit/package/foo9000:>emacs manifest.iscpackage: foo9000prerequisite: server_locationprerequisite: legacy_distprerequisite: platform_selectionこれで、 指 定 したパッケージからパラメータ 変 数 をインポートし、 現 在 のパッケージのインストール・スクリプトの 実 行 に 使用 できるようになります。~/kit/package/foo9000:>emacs install#!/bin/sh. parameters.includeImport host foo9000.hostImport tgtdir "server_location.target_dir"Import srcdir "legacy_dist.source_dir"Import platform_family "platform_selection.platform_family"echo host=$host > $tgtdir/mgr/foo9000.cfgcp $srcdir/dist/foo9000/$platform_family/libfoo9000.so $tgtdir/binパッケージ foo9000 はほぼ 完 成 しました。 最 後 の 作 業 として、 関 連 する 既 存 のパッケージの prerequisite リストにこのパッケージを 追 加 します。それにより、 関 連 パッケージのインストール 処 理 の 一 部 として、foo9000 のインストールが、パッケージ・インストーラによって 実 行 されるようになります。この 場 合 、Caché サーバのインストール 時 に 必 ずこのライブラリのインストールと 構 成 が 行 われるようにする 必 要 があるため、“database_server” パッケージの manifest.isc ファイルで、このパッケージの prerequisite リストに 新 しいパッケージ foo9000 を 追 加 します。82 Caché 専 用 のシステム/ツールおよびユーティリティ


Caché ディストリビューションへの UNIX® インストール・パッケージの 追 加~/kit/package/database_server:>emacs manifest.iscpackage: database_serverprerequisite: legacy_distprerequisite: platform_selectionprerequisite: serverprerequisite: server_locationprerequisite: upgradeprerequisite: available_disk_spaceprerequisite: posix_tools...prerequisite: isqlprerequisite: zlibprerequisite: udpprerequisite: biprerequisite: foo9000上 のリストに 明 らかなように、サーバ・インストールの 作 成 には 多 くのパッケージが 必 要 ですが、これで、cinstall をインストールすると、パッケージ foo9000 の 構 成 とインストールが 実 行 されるようになりました。~/kit:>sudo ./cinstallYour system type is 'SuSE Linux Enterprise Server 10 (x64)'.Currently defined instances:Cache instance 'TRWTURBO'directory: /home/woodfin/TRWTURBOversionid: 2008.2.0.456.0conf file: cache.cpf (SuperServer port = 1972, WebServer = 57785)status: crashed, last used Sat Sep 13 08:37:32 2008Enter instance name: TRWPACK1Do you want to create Cache instance 'TRWPACK1' ? Y...Please enter host name of the Foo9000 imaging server:cupertinoHost cupertino entered....Do you want to proceed with the installation ? Y...Installation completed successfully~/TRWPACK1/bin:>ls libfoo*libfoo9000.so~/TRWPACK1/mgr:>cat foo9000.cfghost=cupertinoparameters.isc ファイルの 内 容次 の 表 は、parameters.isc ファイルに 記 載 されている 変 数 とその 説 明 、およびサンプル 値 、または 有 効 な 値 の 一 覧 です。テーブル 5–3: Caché インストール・パラメータ・ファイルの 変 数変 数 名dist.source_dirlegacy_dist.source_dirproduct_info.versionproduct_info.nameplatform_selection.platform説 明( )インストール 媒 体 のソース・ディレクトリ。/cachekit従 来 の 目 的 では、インストール 媒 体 のソース・ディレクトリ。/cachekitインターシステムズ 社 製 品 のバージョン 番 号 。2012.2.0.100.0インターシステムズ 社 製 品 の 名 前 。(Cache/Ensemble/HealthShare)インストール 先 プラットフォームに 対 するインターシステムズ 社の 略 称 。lnxrhx64Caché 専 用 のシステム/ツールおよびユーティリティ 83


Caché のインストールと 配 布変 数 名platform_selection.platform_familyplatform_selection.endiannessplatform_selection.osposix_tools.user_addposix_tools.group_addposix_tools.grepposix_tools.idposix_tools.ps_optposix_tools.gzipposix_tools.shared_extposix_tools.symbolic_copyposix_tools.trposix_tools.shared_ext1posix_tools.permissionposix_tools.dir_permission説 明( )インストール 先 プラットフォーム・ファミリに 対 するインターシステムズ 社 の 略 称 。lnxrhx64プラットフォームのエンディアン・バイト・オーダー。(big/little)プラットフォームのオペレーティング・システム。uname コマンドの 値 。LinuxPortable Operating System Interface (POSIX) 準 拠 のユーザ追 加 ツール。/usr/sbin/useraddPOSIX 準 拠 のグループ 追 加 ツール。/usr/sbin/groupaddPOSIX 準 拠 の grep ユーティリティ。grepPOSIX 準 拠 の id ユーティリティ。idプロセスのリスト 表 示 ですべて 展 開 するオプション。-efGnu 準 拠 の zip ユーティリティ。gzip共 有 ライブラリ・ファイルの 拡 張 子 。soPOSIX 準 拠 のシンボル・コピー・コマンド。cp -RfpPOSIX 準 拠 の 変 換 ユーティリティ。tr共 有 ライブラリ・ファイルの 代 替 の 拡 張 子 。so選 択 されたファイルに 適 用 される POSIX 準 拠 の 特 権 。755選 択 されたディレクトリに 適 用 される POSIX 準 拠 の 特 権 。77584 Caché 専 用 のシステム/ツールおよびユーティリティ


Caché ディストリビューションへの UNIX® インストール・パッケージの 追 加変 数 名server_location.target_dirserver_location.is_server_installserver_location.instance_nameserver_location.is_new_installserver_location.registry_dirserver_location.ensemble_registry_dirserver_location.convert_ensemble_registryserver_location.ccontrolserver_location.enscontrol (n/a)postinstall*install_mode.setup_typeunicode_selection.binary_typeunicode_selection.install_unicodesecurity_settings.cache_usersecurity_settings.cache_groupsecurity_settings.manager_user説 明( )サーバ・インストールのターゲット・ディレクトリ。/test/CACHEこれがサーバ・インストールであるかどうかを 示 す。(N/Y)インスタンス 名 。CACHEこれが 新 規 インストールであるかどうかを 示 す。((N=アップグレード/Y= 新 規 )Caché レジストリ・ディレクトリの 場 所 (ローカルのファイル・システム 上 にある 必 要 がある)。/usr/local/etc/cachesysN/A4.0 以 前 の Ensemble インスタンスをアップグレードしている 場合 に、 古 い Ensemble レジストリと Caché レジストリを 統 合 するかどうかを 示 す。(N/Y)インストール 中 に、ccontrol が 存 在 するディレクトリ。/cachekit/dist/lnxrhx64/bin/shared/ccontrolN/Aパラメータ・ファイル・フェーズの 後 で 実 行 するパッケージを 指定 。upgradeインストールのタイプ。(Development/Server/Custom)インストールするバイナリのタイプ。(unicode/eightbit)この 製 品 の Unicode 版 をインストールするかどうかを 示 す。(N/Y)Caché スーパーサーバの 実 効 ユーザ。cacheusrCaché の 実 効 グループ。cacheusrインスタンスの 所 有 者 。rootCaché 専 用 のシステム/ツールおよびユーティリティ 85


Caché のインストールと 配 布変 数 名security_settings.manager_groupsecurity_settings.personal_databasesecurity_settings.initial_levelsecurity_settings.already_securedsecurity_settings.passwordmanager_source_code.availableport_selection.superserver_portport_selection.webserver_portport_selection.jdbcgateway_portcsp_gateway.configurecsp_gateway.web_server_typecsp_gateway.apache_versioncsp_gateway.apache_usercsp_gateway.apache_conf_filecsp_gateway.apache_pid_file説 明( )インスタンスの 開 始 および 停 止 を 許 可 されたグループ。developパーソナル・データベース 機 能 を 使 用 するかどうかを 示 す。(N/Y)初 期 のセキュリティ 設 定 。(Minimal/Normal/Locked Down)5.1 以 前 のインスタンスからアップグレードしている 場 合 に、セキュリティ 設 定 が 必 要 かどうかを 示 す。(N/Y)cinstall から 実 行 している 場 合 は、パラメータ・ファイルの 格 納前 にパスワード・フィールドをクリア。マネージャ・ユーティリティ・ソース・コードをインストールするかどうかを 示 す。(N/Y)スーパーサーバ・ポート 番 号 。1972Web サーバのポート 番 号 。57772Java Database Connectivity (JDBC) ゲートウェイ・ポート 番号 。62972外 部 Web サーバ 用 に CSP ゲートウェイを 構 成 するかどうかを 示 す。(N/Y)CSP ゲートウェイで 使 用 する 既 存 の Web サーバのタイプ。(Apache/SunOne/None)Apache Web サーバのバージョンApache Web サーバのユーザ 名Apache Web サーバ 構 成 ファイルの 場 所 。/etc/httpd/conf/httpd.confApache Web サーバ・デーモンのプロセス ID を 記 録 するファイル。/usr/local/apache/logs/httpd.pid86 Caché 専 用 のシステム/ツールおよびユーティリティ


Caché ディストリビューションへの UNIX® インストール・パッケージの 追 加変 数 名csp_gateway.apache_use32bitcsp_gateway.sunone_servercsp_gateway.directorylicense_key.enter_keylicense_key.license_fileagent.user_accountagent.user_groupagent.installinstall*postinstall*install*samples.installjapanese_docs.installinstall*docbook.installclient_location.target_dirclient_location.is_client_install説 明( )Apache Web サーバで 32 ビット・アーキテクチャを 使 用 するかどうかを 示 す。Y/NCSP ゲートウェイで 使 用 する Sun ONE サーバの 場 所 。/usr/netscape/server4/httpd-productionCSP ゲートウェイ・ファイルが 保 存 されるディレクトリ。インストール 中 にキーをインストールするかどうかを 示 す。N/Yenter_key の 値 が Y の 場 合 、キー・ファイル 情 報 の 場 所 。ISCAgent のユーザ 名 。iscagentISCAgent のグループ 名 。iscagentISCAgent がインストールされているかどうかを 示 す。(N/Y)database_serverdatabase_serverSAMPLES データベースのインストールを 開 始 するために 使用 。samplesSAMPLES データベースをインストールするかどうかを 示 す。(N/Y)日 本 語 ドキュメント・ソースをインストールするかどうかを 示 す。(N/Y)オンライン・ドキュメントのインストールを 開 始 するために 使 用 。docbookオンライン・ドキュメントのために DOCBOOK データベースをインストールするかどうかを 示 す。(N/Y)クライアントのみのインストールのターゲット・ディレクトリ。test/CACHEこれがクライアント・インストールであるかどうかを 示 す。(N/Y)Caché 専 用 のシステム/ツールおよびユーティリティ 87


Caché のインストールと 配 布変 数 名install*installer.manifestinstaller.manifest_parameters説 明( )インストールするコンポーネント 名 。DefaultInstallerClass.xml (エクスポートされた%Installer クラス) の 場 所 。 以 下 はその 例 です。/home/user/Downloads/DefaultInstallerClass.xmlインストーラ・マニフェストのプロパティの 場 所 。 以 下 はその 例です。SourceDir=/home/user/Downloads* このインストール 変 数 は、インストールするコンポーネント 1 つにつき 1 回 ずつ、パラメータ・ファイルに 登 場 します。カスタム・インストール、またはクライアントのみのインストールでは、 条 件 に 応 じて、 以 下 のいずれか、またはすべてが 生 成されます。• dev_kit• odbc• cpp_binding• cpp_sdk• perl_binding• python_binding• engine_link_libraries• light_cpp_binding• addenda• install_confirmation• copyright88 Caché 専 用 のシステム/ツールおよびユーティリティ

Weitere Magazine dieses Users
Ähnliche Magazine