我刚开始在Fedora 17中使用gfortran 4.7.2。当我尝试使用以下测试代码时,我没有得到输出:
PROGRAM test_ampersand
IMPLICIT NONE
PRINT *, 'I am a new learner of' &
'fortran'
END PROGRAM test_ampersand
我期待输出为:
I am a new learner of fortran
答案 0 :(得分:5)
这也应该有效:
PRINT *, 'I am a new learner of &
&fortran'
也就是说,字符文字可以在换行符中继续,但每个连续行必须在第一个非空白位置有一个&符号。
答案 1 :(得分:4)
当继续讨论这一行时,你需要一个逗号(在一行上打印多个变量或文字常量时需要)或字符串连接//
,以便将两个字符串连接成一个。
这将有效:
PRINT *, 'I am a new learner of ', &
'fortran'
这也可以:
PRINT *, 'I am a new learner of '// &
'fortran'
答案 2 :(得分:2)
语句继续在自由格式源中的工作方式是将问题的陈述转换为
print *, 'I am a new learner of' 'fortran'
这不是一件有效的事情。当然,人们可以写
print *, 'I am a new learner of'//' fortran'
或
print *, 'I am a new learner of', 'fortran'
并且可能看到相同的效果。
但是,正如其他答案中所述,文字字符可以使用特殊形式的语句延续在自由格式源中继续超过行边界:
print *, 'I am a new learner of &
&fortran'
通常,人们经常看到自由形式的语句延续,只需要在问题的非终止行上使用&
。但是,如果我们这样做,那么该行中的所有前导空格都会成为字符文字的一部分。在续行的&
上,语句继续使用紧随其后的字符,而不是第一行。
然而,对于固定形式的来源,情况有所不同。
print *, 'I am a new learner of'
1'fortran'
就像
print *, 'I am a new learner of' 'fortran' ! Lots of spaces ignored
这又是一个无效的陈述。使用
print *, 'I am a new learner of
1fortran'
是一个有效的语句,但是再次受到第72列之外的所有空格的影响。
可以在这里使用字符串连接:
print *, 'I am a new learner of '//
1 'fortran'
或者只是在第72栏打破这一行(毕竟,由于线路很长,我们正在这样做。)
答案 3 :(得分:1)
在我正在编辑的旧代码中,&符号必须在恰好5个空格后出现在第二行;此代码中的所有其他非注释行以6个空格开头:
brands
Column
brand_id
brand_title
table cart
Column
cart_id
p_id
ip_add
customer_id
qty
categories
Column
cat_id
cat_title
customers
Column
customer_id
customer_name
customer_email
customer_pass
customer_country
customer_city
customer_contact
customer_address
customer_image
customer_ip
customer_orders
Column
order_id
customer_id
due_amount
invoice_no
total_products
order_date
order_status
payments
Column
payment_id
invoice_no
amount
payment_mode
ref_no
code
payment_date
pending_orders
Column T
order_id
customer_id
invoice_no
product_id
qty
order_status
products
Column
product_id
cat_id
brand_id
date
product_title
product_img1
product_img2
product_img3
product_price
product_desc
product_keywords
status
admins
Column
admin_id
admin_email
admin_pass
这与编译器期望的fortran版本有关,它可能从代码中推断出来。因为我正在编辑遗留代码,所以我必须遵循FORTRAN 77风格。你描述的是Fortran 95风格。
您可以在文件扩展名中指明语言版本(例如 PROGRAM test_ampersand
IMPLICIT NONE
PRINT *, 'I am a new learner of'
& 'fortran'
END PROGRAM test_ampersand
而不是.f08
)或compiler options(例如.f
)。如果您不受旧版本的限制,最好使用最新版本。
(所有固定列要求都与Fortran的早期版本如何在穿孔卡上编码有关;较新版本提供其他选项。)