CLIST内での記号や空白を含む文字列の記述

多くのプログラミング言語やスクリプト言語では、文字列をクォーテーション(’)やダブル・クォーテーション(”)記号で囲んで記述することができます。そのため、変数の内容が特定の文字列である場合、その変数内容を別の内容で置き換えたい、といった場合に次のようなコーディングが浮かびます。

しかし、CLISTではこのような記述ではエラーになってしまいます。CLISTでは、*などの算術演算用の文字はそのままでは文字として使用できません。また、”は文字列を示すのではなく単に”という文字(2つのクォーテーション記号)として処理されます。SET &LEVEL = ‘&SYSUID’は、変数LEVELにはクォーテーション記号自身も値として代入されてしまいます。
CLISTでは文字列のリテラルを’記号などで囲むのではなく&STR変数で記述する必要があります。算術演算用の文字でなければ括弧()記号で囲むこともできます。

アルファベットや数字だけで構成される場合は&STR変数を使わずに直接式の中に書いてもいいのですが、この場合でも’記号では囲みません。

VBスクリプトやJava、C言語などを使っていた人であれば、文字列の値はクォーテーション(’)やダブル・クォーテーション(”)記号で囲むことが自然になっているので戸惑うかも知れません。

EXECコマンドでCLISTを実行する際、空白を含んだ文字列をパラメーターとして渡す場合にはクォーテーション記号で囲むことになるので、ちょっと納得できない仕様でもあるのですが慣れるしかありません。