2018年3月16日金曜日

INPUTステートメントで、先頭スペースを保持して読み込む




質問頂いたので、こちらにも展開しておきます。
以下をご覧ください。


data TEST;
   input  X  Y:$3. ;
cards;
1 a
2  b
3   c
;
  X  
  Y  
 1  a 
 2  b 
 3  c


文字変数Yには、CARDSの中身通り先頭スペースを保持して以下のように読み込みたかったのですが、ふつうに読み込むと先頭スペースが消えちゃいます。

  X  
  Y  
 1  a 
 2   b 
 3    c



先頭スペースを保持するには、以下のように工夫が必要です。

data TEST;
   input  @X
             @Y  $char3. ;
cards;
1 a
2  b
3   c
;
  X  
  Y  
 1 
 a 
 2 
  b 
 3 
   c


INPUT  @読み込み開始位置   変数名   $CHAR読み込む文字の長さ.」という感じで書きます。

・「@読み込み開始位置」で変数毎に読み込みを開始する位置を指定し、
・インフォーマット「$CHAR」を使って先頭のスペースを切り捨てずに読み込んでいます。


あと実際質問もらった方に聞かれたことなので、一応こちらでも補足説明しておきます。
$CHARは文字変数として読み込むときに使います。
上の例の変数Xは数値変数として読み込みたいので$CHARの指定はしていません。

0 件のコメント:

コメントを投稿