1

SAS 9.2 を使用して、z/OS メインフレーム データセットに関する情報を一覧表示する IDCAMS ユーティリティ レポートからデータを読み取ろうとしています。日付の形式は yyyy.jjj で、yyyy は 4 桁の年で、jjj はユリウス日です。標準のSAS INFORMATSはそれを好まないため、期間が問題です。そのような日付をどのように読むのでしょうか?

サンプルコード:

DATA ALL smflist (KEEP=DSNAME volser) ;         
LENGTH dsname $ 44. volser $ 6. createdt 8.;   
INFILE SYSPRINT LENGTH=LEN;                     
input @ "NONVSAM ------- " dsname;             
input @ "CREATION--------" createdt JULIAN8.;   
input @ "VOLSER------------" volser;           

INFILE SYSPRINT を含むサンプル出力: (Col 54 には作成日があります)

NOTE: Invalid data for createdt in line 282 54-61.                               
NONVSAM ------- SYSP.LPAR.SMFOTHR.ROLLING.G3563V00                               
     IN-CAT --- USR.UCAT.ALIASP                                                 
     HISTORY                                                                     
       DATASET-OWNER-----(NULL)     CREATION--------2014.174                     
       RELEASE----------------2     EXPIRATION------0000.000                     
       ACCOUNT-INFO-----------------------------------(NULL)                     
       STATUS------------ACTIVE                                                 
     SMSDATA                                                                     
       STORAGECLASS ------SCPNV     MANAGEMENTCLASS-MCPNVGD2                     
       DATACLASS ---------DCSMF     LBACKUP ---XXXX.XXX.XXXX                     
     VOLUMES                                                                     
       VOLSER------------MIGRAT     DEVTYPE------X'78048081'     FSEQN---------- 
     ASSOCIATIONS                                                               
       GDG------SYSP.LPAR.SMFOTHR.ROLLING                                       
     ATTRIBUTES                                                                 
4

1 に答える 1

1

このコードはそれを処理しました...

  DATA smflist (KEEP=dsname createdt volser) ;               
  LENGTH dsname $ 44. volser $ 6. dummy $ 8. createdt 7.;   
  FORMAT CREATEDT MMDDYY10.;                                 
  INFILE SYSPRINT LENGTH=LEN;                               
  input @ "NONVSAM ------- " dsname;                         
  input @ "CREATION--------" dummy;                         
  dummy = prxchange('s/(\d{4}).(\d{3})/\1\2/', -1, dummy);   
  createdt = input(dummy,JULIAN7.);                         
  input @ "VOLSER------------" volser;                       
于 2014-08-05T18:17:14.367 に答える