https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117819
Bug ID: 117819
Summary: Formatted READ with BZ in format fails
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libfortran
Assignee: unassigned at gcc dot gnu.org
Reporter: jvdelisle at gcc dot gnu.org
Target Milestone: ---
The following test case courtesy Malcolm Cohen:
Program xe1
Implicit None
Character(6) string
Integer x
Logical :: ok = .True.
string = '111111'
print *, "String we read from is: ", string
Read(string,2) x
2 Format(BZ,B8)
If (x/=Int(b'11111100')) Then
Print *,'FAIL B8 BZ wrong result'
Print *,'Expected',Int(b'11111100')
Print *,'Received',x
ok = .False.
End If
string = '123456'
Read(string,1) x
1 Format(BZ,I8)
If (x/=12345600) Then
Print *,'FAIL I8 BZ wrong result'
Print *,'Expected',12345600
Print *,'Received',x
ok = .False.
End If
Read(string,3) x
3 Format(BZ,O8)
If (x/=Int(o'12345600')) Then
Print *,'FAIL O8 BZ wrong result'
Print *,'Expected',Int(o'12345600')
Print *,'Received',x
ok = .False.
End If
Read(string,4) x
4 Format(BZ,Z8)
If (x/=Int(z'12345600')) Then
Print *,'FAIL OZ BZ wrong result'
Print *,'Expected',Int(z'12345600')
Print *,'Received',x
ok = .False.
End If
If (ok) Print *,'ok IBOZ with BZ and PAD'
End Program
$ gfc malcolm1.f90
$ ./a.out
String we read from is: 111111
FAIL B8 BZ wrong result
Expected 252
Received 63
FAIL I8 BZ wrong result
Expected 12345600
Received 123456
FAIL O8 BZ wrong result
Expected 2739072
Received 42798
FAIL OZ BZ wrong result
Expected 305419776
Received 1193046