前のページ|次のページ

CALL POKEルーチン

32ビットプラットフォームのメモリに値を直接書き込みます。

カテゴリ: 特殊
制限事項: 32ビットプラットフォームでのみ使用します。
操作: SAS Serverがロックダウン状態の場合、CALL POKEルーチンは実行されません。詳細については、SAS Processing Restrictions for Servers in a Locked-Down State (SAS言語リファレンス: 解説編)を参照してください。

構文

CALL POKE(source, pointer <, length> <, floating-point>);

必須引数

source

メモリに書き込む値が含まれる定数、変数または式を指定します。

pointer

CALL POKEルーチンで変更するデータの仮想アドレスが含まれる数値式を指定します。

オプション引数

length

sourceからpointerによって示されたアドレスに書き込むバイト数が含まれる数値の定数、変数または式を指定します。lengthを省略した場合、CALL POKEルーチンで実行されるアクションはsourceが文字値か数値かによって異なります。

  • sourceが文字値の場合、CALL POKEルーチンは指定されたメモリの場所にsourceの値全体をコピーします。
  • sourceが数値の場合、CALL POKEルーチンはsourceを長整数型に変換し、ポインタを構成するバイト数をメモリに書き込みます。
    z/OS固有: z/OSでは、ポインタの長さは状況に応じて3または4バイトです。

floating-point

sourceの値を浮動小数点数として保存するように指定します。floating-pointの値はどのような数値でもかまいません。

ヒント floating-point引数を使用しない場合、sourceは整数値として保存されます。

詳細

注意:
CALL POKEルーチンは、特定のケースで経験豊富なプログラマのみが使用するために用意されています。
このルーチンを使用する場合は、プログラミングと入力に細心の注意を払ってください。メモリに直接入力すると、重大な問題が発生する可能性があります。このルーチンは、その時点でアクティブなSASセッションまたはソフトウェアの別の部分で不可欠な要素が破壊されることを防ぐ通常の保護を省略します。
指定したメモリの場所にアクセスできない場合、CALL POKEルーチンは無効な引数エラーを返します。
64ビットプラットフォームでCALL POKEルーチンを使用しようとすると、このアクションが完了できないことを示すメッセージがSASによってログに書き込まれます。CALL POKEを使用する従来のアプリケーションがある場合、かわりにCALL POKELONGを使用するようにアプリケーションを変更します。CALL POKELONGは32ビットと64ビットのプラットフォームで使用できます。
第4引数を使用する場合、値は浮動小数点数として保存されます。第4引数を使用しない場合、整数値として保存されます。

関連項目:

CALLルーチン:
前のページ|次のページ|ページの先頭へ