fortran fortran中文资料网
手气不错
Article

041.formatStatement_FORMAT语句

2026年8月31日基础级

科学计算常按相同布局连续输出多组测量值。把布局定义为带标签的FORMAT语句,多条输入输出语句便可引用同一格式,避免重复书写编辑描述符。format适合生成结构固定的计算结果表、迭代过程记录或批量测量报告,尤其适用于多处输出必须统一列宽、数值精度和单位的场景。

语法结构

write (unit, label) output_list

label format (edit_descriptor_list)
  • label是1到5位数字组成的语句标签,其作用范围限于当前程序单元。
  • FORMAT语句不可执行,只保存格式说明;程序执行到它所在的位置时不会产生输出。
  • 多条输入输出语句可以引用同一标签。修改该FORMAT语句后,所有引用处都会采用新布局。

本文代码

! 多条输出语句可以引用同一个FORMAT语句,共享固定布局。
program formatStatementDemo
  implicit none

  integer :: channelId
  real :: voltage

  channelId = 1
  voltage = 3.3
  write (*, 100) channelId, voltage

  channelId = 12
  voltage = 12.345
  write (*, 100) channelId, voltage

100 format ("通道", I2, ":", 1X, F6.2, 1X, "V")
end program formatStatementDemo

编译运行

(base) hong@hongdeMacBook-Pro 041.formatStatement % gfortran -Wall -Wextra -std=f2018 exampleFormatStatement.f90
(base) hong@hongdeMacBook-Pro 041.formatStatement % ./a.out
通道 1:   3.30 V
通道12:  12.35 V

现象分析

两条write语句都用100引用同一个FORMAT语句,因此两组测量值具有完全相同的列宽、精度和单位。I2让通道编号占2列,F6.2让电压占6列并保留2位小数,于是位数不同的数据仍能纵向对齐。

标签100不是输出单元号:星号表示标准输出,100只负责找到格式。若要为所有记录增加单位、调整列宽或改变小数位数,只需修改标签100处,不必逐一修改两条write语句。

核心知识点

  • FORMAT语句把可复用的固定布局与具体输出操作分开。
  • 语句标签标识格式,输出单元决定数据写到哪里,两者含义不同。
  • 重复输出同类记录时适合使用标签格式;只使用一次的简单格式通常直接内联更容易阅读。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注