转向 64 位 SAS

Moving to 64 bit SAS

我每天按计划处理数百个 SAS 程序运行。

如果我将 SAS 升级到 64 位,如何防止由于迁移而导致的错误(可能语法/过程要求从 32 位更改为 64 位)?

32 位和 64 位之间没有任何语法差异。您应该转换数据,查看 proc migrate

从可用性的角度来看,32 位和 64 位 SAS 之间的主要区别:

  • 正在导入 Excel(和 Access)文件。如果您使用 Windows,您的 SAS 位数需要与 Microsoft Office 的位数匹配才能使用 DBMS=EXCELlibname excel。有关更多详细信息,请参阅 this paper。有一些解决方法,包括 PC 文件服务器或使用 DBMS=XLSX,具体取决于您的版本和 OS.
  • 格式化目录。您的格式目录在 32 位和 64 位 SAS 之间不兼容,就像它们在 Unix 和 Windows 之间不兼容一样。在我看来,最好的办法是使用 proc formatCNTLOUT 选项将它们导出到数据集,然后使用 CNTLIN 选项以 64 位导入它们。如果您的环境中有混合版本(有些人有 32 个版本,有些人有 64 个版本),您将希望维护两个目录或让每个人仅与 CNTLOUT 导出的数据集交互。这也适用于 stored/compiled 宏目录。
  • 数据集版本。 32 位和 64 位 SAS 可以读取彼此的数据集,但代价是访问时间较慢;根据我的经验,这并没有 坏,但是如果您有大型数据集,您将希望使用 proc migrate 转换它们,或者简单地读入它们并以 64 位重写它们一次。

Chris Hemedinger 在他的博客 post on The SAS Dummy 中涵盖了相同的三个问题,并提供了一些额外的细节。

一般来说,数据步骤和过程的语法在两个版本之间没有区别,尽管随着内存的增加,一些在 32 位中不切实际的技术在 64 位中变得可用(大型哈希表,一些 PROCs 可以工作使用大量 RAM 非常有效)。