File: format_45.f90

package info (click to toggle)
lfortran 0.59.0-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 56,736 kB
  • sloc: cpp: 168,052; f90: 74,272; python: 17,537; ansic: 7,705; yacc: 2,345; sh: 1,334; fortran: 895; makefile: 37; javascript: 15
file content (35 lines) | stat: -rw-r--r-- 1,042 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
! Test that embedded null bytes in strings are preserved during formatting
program format_45
    implicit none
    character(len=20) :: result_str
    character(len=10) :: prefix
    real :: value
    integer :: i

    ! Set prefix to null bytes
    do i = 1, 10
        prefix(i:i) = char(0)
    end do
    value = 1.5

    write(result_str, '(A,F5.2)') prefix, value

    ! Verify first 10 bytes are null
    do i = 1, 10
        if (ichar(result_str(i:i)) /= 0) error stop
    end do

    ! Verify float " 1.50" at positions 11-15
    if (ichar(result_str(11:11)) /= 32) error stop  ! space
    if (ichar(result_str(12:12)) /= 49) error stop  ! '1'
    if (ichar(result_str(13:13)) /= 46) error stop  ! '.'
    if (ichar(result_str(14:14)) /= 53) error stop  ! '5'
    if (ichar(result_str(15:15)) /= 48) error stop  ! '0'

    ! Verify trailing spaces at positions 16-20
    do i = 16, 20
        if (ichar(result_str(i:i)) /= 32) error stop
    end do

    print *, "PASS: Null bytes preserved correctly in formatted output"
end program