MaxL Shellコマンド
MaxL Shellを起動する方法には様々なものがあり、Essbaseを操作するときにMaxL文に加えてMaxL Shellコマンドが必要になることがよくあります。MaxL Shellコマンドには、login、spool、set column width、set message level、set timestamp、echo、nesting、iferror/gotoおよびlogoutがあります。
MaxL Shellには、MaxL言語自体とは別に、便利なコマンド・セットがあります。
MaxL Shell呼び出し
MaxL Shell (essmsh
)は、MaxL文を入力するための事前解析メカニズムです。
対話型で使用するようにシェルを起動して、ファイルからの入力を読み取ったり、ストリーム指向の入力(別のプロセスからの標準入力)を読み取ることができます。シェルの起動後に対話型でログインしたり、入力ファイル内のログイン文を使用してログインできます。また、-lフラグを使用して、呼び出し時にログインすることもできます。
essmsh
シェルを起動するには、直接起動しないでください。環境を正しく設定するためには、startMAXL.bat
(Windows)またはstartMAXL.sh
(UNIX)を使用して、essmsh
を起動する必要があります。
startMAXL.bat-h|more
と入力すると、オペレーティング・システムのコマンド・プロンプトでヘルプを利用できます。
ノート:
ヘルプ・テキストは、essmsh
シェル用です。ただし、環境を正しく設定するためには、startMAXL.bat
(Windows)またはstartMAXL.sh
(UNIX)を使用して、essmsh
を起動する必要があります。これまでessmsh
に渡していた場合と同じように、同じ引数をstartMAXL
に渡すことができます。たとえば、essmsh -l username password
ではなく、今後はstartMAXL.bat -l username password
を使用する必要があります。
対話型入力フラグ
次のようにMaxL Shellにログインして対話型で使用できます(キーボードで文を入力します)。
フラグ | 説明/例 |
---|---|
フラグなし |
フラグ、ファイル名または引数なしで起動すると、MaxL Shellは対話型モードで起動し、ユーザーのログインを待機します。UNIXユーザーへのノート: 次の例では、
|
-aフラグ: 引数 |
-aフラグを指定すると、MaxL Shellは対話型モードで起動し、キーボードから位置パラメータで参照できるスペース区切りの引数を受け入れます。 スプーリングをオンにして対話型引数を使用すると、変数は入力したとおりにログ・ファイルに記録されます(たとえば、
|
-lフラグ: ログイン |
-lフラグを使用し、その後にユーザー名とパスワードを続けると、MaxL Shellは指定されたユーザー名とパスワードにログインし、対話型または非対話型モードで起動します。ユーザー名とパスワードは、-lのすぐ後に続け、スペースで区切る必要があります。
|
-u、-pおよび-sフラグ: ログイン・プロンプトとホスト名選択 |
MaxL Shellは、-uおよび-pオプションを使用して対話型モードで起動して、起動時にユーザー名とパスワードをシェルに渡すことができます。ユーザー名とパスワードの両方を要求するには、-sオプションを使用してEssbaseサーバーのホスト名を指定します。
|
-mフラグ: メッセージ・レベル |
-m <messageLevel>をシェルに渡すと、指定したレベルのメッセージのみがシェルから返されます。 例: <messageLevel>値に含まれる内容: default、all、warning、errorおよびfatal。デフォルト値はallです(defaultを指定した場合と同じです)。 |
ファイル入力
(キーボードで文を入力するのではなく)次の方法でMaxL Shellを起動して、スクリプトを実行します。
startMAXL.sh
またはstartMAXL.bat
と入力し、その後にファイル名またはパスを続けた場合は、シェルがその指定したファイルから入力を受け取ります。
startMAXL.sh /client/scripts/filename.msh
コマンド・プロンプトで入力すると、前述の例はシェルを起動し、ファイルからMaxL文を読み取るように指示し、それが完了したらセッションを終了します。
startMAXL.bat filename
前述の例は、シェルを起動して、現在のディレクトリ(MaxL Shellの起動元のディレクトリ)にあるfilename
からMaxL文を読み取ります。
startMAXL.sh
またはstartMAXL.bat
と入力し、その後にファイル名、さらにその後に1つの引数またはスペース区切りの引数のリストを続けた場合、essmshはコマンドライン引数を記憶します。これらは、指定したファイルで$1
や$2
などとして参照できます。スプーリングがオンになっている場合は、ログ・ファイルにすべての変数が展開されます。
startMAXL.bat filename.msh Fiona sunflower localhost
前述の例は、シェルを起動して、現在のディレクトリにあるfilename.msh
からMaxL文を読み取ります。
標準入力
-iフラグを指定すると、essmshは標準入力を使用します。これは、別のプロセスからの入力にすることもできます。次に例を示します。
program.sh | startMAXL.bat -i
program.shが出力としてMaxL文を生成した場合、program.sh
をstartMAXL.bat-i
にパイプして、program.sh
の標準出力をessmshの標準入力として使用できます。Essmshは、program.sh
が出力を生成すると入力を受け取るため、スクリプトを効率的に協調実行できます。
例
echo login Fiona sunflower on localhost; display privilege user;|startMAXL.bat -i
前述の例では、MaxL Shellはエコー・コマンドの出力から入力を受け取ります。ユーザーFionaがログインし、ユーザー権限が表示されます。
後続のMaxL Shellコマンドのいずれかを使用する前に、ログインが必要です(ログインを参照)スプールのオン/オフ
MaxL Shellセッションの出力をファイルに記録します。MaxL文の実行によって生成された標準出力、情報メッセージ、エラー・メッセージおよび警告メッセージ、またはそのいずれかをファイルに送信します。
FILE-NAMEが存在しない場合は作成されます。FILE-NAMEがすでに存在する場合は上書きされます。FILE-NAMEのディレクトリ・パスが指定されていない場合、MaxL Shellの現在のディレクトリにFILE-NAMEが作成されます。スプール・コマンドを使用してディレクトリは作成できません。
メッセージ・ロギングは、spool onで開始されてspool offで終了します。

図hspool.gifの説明
例
spool on to 'output.txt';
MaxLの出力が、MaxL Shellが呼び出された現在のディレクトリにあるoutput.txtというファイルに送信されます。
説明
ほとんどのオペレーティング・システムで、入力/出力に次の3つのチャネルが使用されます。
-
STDIN (標準入力チャネル)
-
STDOUT (標準出力チャネル)
-
STDERR (標準エラー・チャネル)
ほとんどのオペレーティング・システムで、前述のどのチャネルでデータがパイプされるかに応じて、アプリケーションで生成されたデータのリダイレクト向けにコマンドライン・オプションも提供されています。
MaxLのエラーにはSTDERRとフラグが付けられて、オペレーティング・システムのリダイレクト・ハンドルを使用した、エラーのコマンドライン・リダイレクトが許可されます。エラー以外はSTDOUTとフラグが付けられるため、標準出力はエラー出力とは分けてログに記録されるようにできます。次に、呼出し時にエラー出力がリダイレクトされる例を示します。
essmsh script.mxl 2>errorfile.err
ノート:
オペレーティング・システムのリダイレクト・ハンドルには様々な種類があるため、プラットフォームのドキュメントを参照してください。
spool
コマンドの対応するオプションを使用して、STDERRとSTDOUTを異なるMaxL出力ログに個別にリダイレクトすることもできます。たとえば、スクリプトに次の行を配置すると、あるファイルにエラーをリダイレクトし、別のファイルに出力できます。
spool stdout on to 'output.txt';
spool stderr on to 'errors.txt';
または、エラーのみをリダイレクトできます。
spool stderr on to 'errors.txt';
または、出力のみをリダイレクトできます。
spool stdout on to 'output.txt';
ノート:
汎用のスプールと特殊な出力チャネル・スプールを同じスクリプトで使用できません。たとえば、次のように指定することは有効ではありません。
spool on to 'session.txt';
spool stderr on to 'errors.txt';
表示列幅の設定
現在のMaxL Shellセッションについて、MaxLの表示出力表に表示される列の幅を設定します。
-
デフォルト: 20文字
-
最小: 8文字
-
最大: なし。

図hsetcol.gifの説明
例
set column_width 10;
列の幅が10文字に設定されます。
set column_width default;
列の幅が20文字に戻ります。
メッセージ・レベルの設定
MaxL Shellセッションから返されるメッセージのレベルを設定します。デフォルトでは、すべてのメッセージが返されます。

図hsetmsg.gifの説明
表3-20 MaxL Shellメッセージ・レベル
メッセージ・レベル | 説明 |
---|---|
all | エラー、警告、ステータス・レポートおよび情報メッセージ。これはデフォルトのメッセージ・レベルです。 |
error | EssbaseおよびMaxL Shellのエラー・メッセージ。 |
warning | Essbaseの警告メッセージ。 |
fatal | シェルがEssbaseから切断される要因となるエラーのみ。 |
例
set message level all;
タイムスタンプの設定
各MaxL文の実行後のタイムスタンプ表示を有効または無効にします。デフォルトでは、タイムスタンプは返されません。

図set_timestamp.gifの説明
ノート:
タイムスタンプ情報は、エラー制御シェル文のgoto、iferrorおよびdefineの後には表示されません。
例
set timestamp on;
エコー
画面またはログ・ファイルにテキストを表示するか、変数を展開します。スプール(ログ・ファイルの生成)がオンの状態でスクリプトで使用すると、echoはログ・ファイルに変数を展開します。対話型セッションでは、変数はログ・ファイルに展開されません。かわりに、入力した変数名が記録されます(例: $1
)。
構文
echo <text> | <variablename>
例
変数のディスカッションでechoを使用する例を参照してください(MaxL Shellの構文ルールと変数)。
ネスト
MaxLスクリプトを、別のMaxLスクリプト内から参照します(含めます)。参照されるMaxLスクリプトに、現在のMaxLスクリプトに役立つ変数が定義されている場合にこれを使用できます。
構文
msh <scriptfile>
;
例
login fiona sunflower;
alter database sample.basic end archive;
msh calculate.msh;
alter database sample.basic
begin archive to file bak;
logout;
ノート
ネストされたスクリプトで定義または変更された変数は、ネストされたスクリプトの実行後に親スクリプト内に保持されます。
mshはシェル・コマンドであるため、元のセッションに制限されます。そのため、新しいログイン文が含まれるMaxLスクリプトは参照しないようにします。
エラーのチェックとブランチ
ifErrorでは、ラベル名で定義されたスクリプト内の特定の場所まで後続の文をスキップして、前の文のエラーに応答するようにMaxL Shellに指示されます。
ifErrorは、先行する文のみでエラーの有無を確認します。IfErrorでは、次のものが確認されます。
-
MaxL文の実行に含まれるエラー
-
次を含む、MaxL Shellコマンドの実行に含まれるエラー
-
権限エラーなど、
spool on/off
のエラー -
無効な幅など、
set column_width
のエラー -
権限エラーや存在しない組込みファイルなどの、スクリプトのネストのエラー
-
gotoでは、ラベル名で定義されるスクリプト内の特定に場所にブランチするようにMaxL Shellに強制されます。gotoはエラーの発生に依存しません。
構文
iferror LABELNAME
goto LABELNAME
define label LABELNAME
例: iferror (MaxL)
次のスクリプト例には、ディメンション構築文と、データ・ロード文が含まれます。ディメンション構築が失敗した場合、データ・ロードはスキップされます。
login $1 $2;
import database sample.basic dimensions
from data_file 'C:\\data\\dimensions.txt'
using rules_file 'C:\\\\data\\rulesfile.rul'
on error append to 'C:\\\\logs\\dimbuild.log';
iferror 'dimbuildFailed';
import database sample.basic data from data_file
"$ARBORPATH\\app\\sample\\basic\\calcdat.txt"
on error abort;
define label 'dimbuildFailed';
exit;
例: iferror (MaxL Shell)
次のスクリプト例では、MaxL Shellエラーを含む様々なエラーをテストして、終了状態の変数をゼロ以外の引数に設定して、終了状態をMaxL Shellに戻す方法を示します。
### Begin Script ###
login $1 $2;
echo "Testing syntactic errors...";
spool on to spool.out;
set timestamp on;
iferror 'End';
msh "doesnotexistlerr.mxl";
iferror 'FileDoesNotExistError';
echo "Script completed successfully...";
spool off;
logout;
exit 0;
define label 'FileDoesNotExistError';
echo "Error detected: Script file does not exist";
spool off;
logout;
exit 1;
define label 'ShellError';
echo ' Shell error detected...';
spool off;
logout;
exit 2;
define label 'End';
echo ' Syntax error detected...';
spool off;
logout;
exit 3;
### End Script ###
例: goto
次のスクリプト例には、ディメンション構築文と、データ・ロード文が含まれます。gotoは、データ・ロードをスキップするために使用します。
login $1 $2;
import database sample.basic dimensions
from data_file 'C:\\data\\dimensions.txt'
using rules_file 'C:\\\\data\\rulesfile.rul'
on error append to 'C:\\\\logs\\dimbuild.log';
goto 'Finished';
import database sample.basic data from data_file
"$ARBORPATH\\app\\sample\\basic\\calcdat.txt"
on error abort;
define label 'Finished';
exit;
ノート
MaxL Shellでは、スクリプト内をLABELNAMEまで後ろではなく前にスキップします。
バージョン
使用しているMaxLのバージョンを表示するには、versionと入力します。
例
version;
ログアウト
Essbaseから、対話型のMaxL Shellを終了せずにログアウトします。
例
logout;
終了
対話型モードを使用した後、MAXL
>プロンプトを終了します。親シェルに終了状態を返すために、オプションで、終了状態変数にゼロ以外の引数を設定できます。
ノート:
MaxLスクリプト・ファイルまたはストリーム指向の入力(-iスイッチを使用)の最後に、必ずしも終了する必要はありません。
例
exit 10;
MaxL Shellウィンドウまたはターミナルを戻りステータス10で閉じます。これは、IfErrorと組み合せて使用して、親シェルにゼロ以外のエラー状態を返せます。