fortran单位数标准是如何形成的?

fortran单位数标准是如何形成的?,fortran,Fortran,在fortran语言中,标准是单位0。标准输入为5号机组,标准输出为6号机组。就谷歌看来,这似乎是一个克雷的决定,但不清楚他们为什么选择这样做。为什么不是1和2呢?在旧的fortran编译器上将stdin和out转换为5和6时,1-4有什么用?根据(Clive G.Page的《fortran 77专业程序员指南》),为了向后兼容,单元5和6分别分配给stdin和stdout,读卡器通常连接到“单元5”和线路打印机至“6号机组”,报价: 为了保持与Fortran66的兼容性,许多系统提供了其他预连

在fortran语言中,标准是单位0。标准输入为5号机组,标准输出为6号机组。就谷歌看来,这似乎是一个克雷的决定,但不清楚他们为什么选择这样做。为什么不是1和2呢?在旧的fortran编译器上将stdin和out转换为5和6时,1-4有什么用?

根据(Clive G.Page的《fortran 77专业程序员指南》),为了向后兼容,单元5和6分别分配给stdin和stdout,读卡器通常连接到“单元5”和线路打印机至“6号机组”,报价:

为了保持与Fortran66的兼容性,许多系统提供了其他预连接文件。过去习惯上,单元5连接到读卡器,单元6连接到行打印机。其他单元通常连接到具有适当名称的光盘文件:因此,单元39可能连接到名为FTN039.DAT的文件,甚至是TAPE39

这并不是说这给出了选择数字5和6的任何逻辑,而是一些历史背景。在历史机器上,与1-4号机组相连的部件仍处于打开状态。以下旧书/手册可能会有所启发:

根据第90页,并非所有FORTRAN编译器都使用第5和第6单元进行读卡器输入和行打印机输出:
滑铁卢FORTRAN IV和IBM System/360 FORTRAN IV确实为此使用了第5和第6单元,但在IBM 1130上,第2和第1单元用于读卡器输入和行打印机输出

最后,根据第3-6页的说明,对于FORTRAN-10/20,“单元1是磁盘,单元2是读卡器,单元3是行打印机,单元5是终端”。使用VAX FORTRAN,第5单元适用于终端的I和O。

也许这最后一部分表明,由于一些机器除了读卡器输入和行打印机输出外,还开始有I/O终端,首选/默认设备可能已经成为输入和输出终端,高级终端相关单元已成为I/O默认值。

当然,Fortran语言标准并不强制要求将单元编号与预连接文件相关联,而是一种几乎普遍遵守的惯例。事实上而不是法律上。IBM Fortran使用5和6的时间早于Cray和任何stdin stdout的想法。我希望它是Fortran IV和IBM编译器(G和H及更早版本),而不是66标准。许多实际细节都保留在标准中,供实现时自由使用。事实上,我在ANSI X3.9 FORTRAN 66标准中找不到任何此类信息。没错,根据我找到的一些旧手册,FORTRAN IV确实是一种语言,根据编译器/系统的不同,“stdio”使用不同的单元。据此编辑。