邓贵大 发表于 2013-9-8 00:43 
That shows you how to get a[100]'s address, given the address of a[1].
But still nobody knows w ...
跟学计算机的牛人讨论了一下
data _null_;
a='123456';
y=peekclong(addrlong(a),8);
put a= y=;
run;
这样就不会出错,说明char类型的存储和读取过程是一样的,但是numeric型的就不一样
data _null_;
a=123456;
y=peeklong(addrlong(a),8);
put a= y=;
run;
这个其实也没有出错,内存中是以浮点型存储的
data _null_;
a=123456.12;
x=put(a,pib8.);
y=peeklong(addrlong(x),8);
put x= y=;
run;
这个例子说明了它存的是浮点型,pibw.d的解释是Reads positive integer binary (fixed-point) values.
无符号的整数
所以经过put之后x已经变成char类型,所以peeklong出来的结果是123456
data _null_;
a = 123456;
x = peekclong(addrlong(a),8);
y = input(x, rb8.);
put x= y=;
run;
这个正确的原因是用了浮点的格式去读rbw.d所以这中方法的答案是正确的
不知道我说的有没有错?请邓老指点