上善若水分享 http://blog.sciencenet.cn/u/ddbb12 迷途知返的书童,苦海无边的行僧。

博文

【Fortran】format语句中如何指定重复数目的格式描述符

已有 12817 次阅读 2011-10-12 09:37 |个人分类:计算机|系统分类:科研笔记| Fortran, 格式, 重复, Format, 数目

好久没有写过与fortran程序相关的东西了。Fortran语言作为至今仍在研究界有很大的市场,因其语法简单,规则较少,使用灵活,的确是吾辈求解方程、数值模拟的一大神器。具体的关于Fortran语言的介绍和基本规则,可参考很多的参考书和搜索引擎。笔者本人学习的是Fortran 95 程序设计》彭国伦,可参考本博书评。

昨天想到了这样一个问题:
例如,有一个可变数组(allocatable array)是N维的,dimesion :: a(N), 如果N=10,那么可以用

  write(*,100)(a(i)i=1,10)
100 format(10(I3))

之类的代码来进行输出操作。

但是,如果一旦N发生变化,那么只有修改format语句才能正确输出。而且,为了保持所有平台的兼容性,应该要求每次N发生变化的时候,都应该修改代码。这有失一般性。

那么有没有可能在fortran的format语句中用变量来表示描述符的个数,或者说,有没有可能将format写成:
format(N(I3))之类的格式呢?

实际上这个问题可以有多种解决途径:
1、 据说在CVF下可以使用一个尖括号来写成如<n>I3,从而来表示可变的重复次数。CVF的手册上也是如此说的,但是由于没有环境,因此没有做过测试。

2、可先设计一个不限长度的字符串,然后通过显示循环,将要输出的a(i)的每个元素都以内部文件的形式写入该字符串中。最后只需要输出该字符串即可。

3、实际上最后解决问题的方法是这样的,只需要将format中这个要重复描述符前面的这个数字设计成一个比待输出的元素个数的大的整数即可。该方法已经在gfortran下调试通过,没有任何错误。 当然,这种方法也有缺陷,如果这些重复输出元素不是输出列表中的最后一项就会出现格式错乱。、

话说,格式这种事情本来就很容易的错乱的。人们总是希望输出的东西好看,整齐,有规律,所以才有了格式这个玩意。Anyway,也算是个小问题。



https://blog.sciencenet.cn/blog-71139-495889.html

上一篇:知音体哲理故事图片
下一篇:[gnuplot]练习记录(基本函数作图)
收藏 IP: 133.75.134.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 20:39

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部