@与@@的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一个数据步可以包括多个INPUT语句。在数据步执行过程中,一般的,在INPUT语句执行前,会默认从外部数据源读取一个观测记录(一般为一行或多行)到输入缓冲器中,然后按照INPUT设定的格式读入相关变量到PDV中。当程序有多个INPUT语句时,每一个INPUT 语句都会在执行前读入一个观测记录到输入缓冲器。因此若前一个input语句执行完毕之后,若该行的数据没有使用完,遇到下一个INPUT语句时也会放弃之前没有用完的数据。若需要保留前一个INPUT语句使用过的数据行供以后的input语句使用,只需在前一个INPUT 语句最后加入跟踪符合@,表示该行没有用完的数据暂时保存在输入缓冲器中以备下一个最近的INPUT语句使用。

9 data abc;

60 put _all_;

61

62 infile cards;

63

64 input x @;

65 put _all_;

66

67 input y;put _all_;

68

69

70 input z @@;

71 put _all_;

72

73 cards;

x=. y=. z=. _ERROR_=0 _N_=1

x=1 y=. z=. _ERROR_=0 _N_=1

x=1 y=2 z=. _ERROR_=0 _N_=1

x=1 y=2 z=7 _ERROR_=0 _N_=1

x=. y=. z=. _ERROR_=0 _N_=2

x=8 y=. z=. _ERROR_=0 _N_=2

x=8 y=9 z=. _ERROR_=0 _N_=2

x=8 y=9 z=13 _ERROR_=0 _N_=2

x=. y=. z=. _ERROR_=0 _N_=3

x=14 y=. z=. _ERROR_=0 _N_=3

x=14 y=15 z=. _ERROR_=0 _N_=3

NOTE: LOST CARD.

RULE: ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+--

77 ;

x=14 y=15 z=. _ERROR_=1 _N_=3

NOTE: 数据集WORK.ABC 有2 个观测和3 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

实际时间0.01 秒

CPU 时间0.01 秒

77 ;

78 run;

在数据步执行的每次循环开始时,程序会将输入缓冲器中的信息删除,在程序执行过程中遇到INPUT语句时,就从源数据文件中读入一个新的观测记录(一般是一行或多行)到输入缓冲器。如果源数据文件中一个数据行有多个观测记录,每次循环也只能读取第一个。若要在程序运行的下一个循环中继续读取之前没有读完的数据行,只需在INPUT语句最后加入两个跟踪符号@@,表示该行没有用完的数据保存在输入缓冲器中以备下一个程序循环继续使用

相关文档
最新文档