File: array_slice_02.f90

package info (click to toggle)
lfortran 0.45.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 46,332 kB
  • sloc: cpp: 137,068; f90: 51,260; python: 6,444; ansic: 4,277; yacc: 2,285; fortran: 806; sh: 524; makefile: 30; javascript: 15
file content (33 lines) | stat: -rw-r--r-- 747 bytes parent folder | download
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
program array_slice_02
implicit none

integer(1) :: decoder_txt(10) = (/97, 98, 99, 65, 66, 100, 67, 69, 70, 71/)
integer :: start, end
character(:), allocatable :: txt

start = 3
end  = 8
if( lbound(decoder_txt(start:end), 1) /= 1 ) error stop
if( ubound(decoder_txt(start:end), 1) /= end - start + 1 ) error stop
txt = c2s(decoder_txt(start:end))
print *, txt
if( txt /= 'cABdCE' ) error stop

contains

function c2s(x) result(y)

integer(1), intent(in) :: x(:)
character(:), allocatable :: y
integer :: i
print *, lbound(x, 1), ubound(x, 1), size(x)
if( lbound(x, 1) /= 1 ) error stop
if( ubound(x, 1) /= size(x) ) error stop
allocate(character(size(x)) :: y)
do i = 1, size(x)
    y(i:i) = char(int(x(i), 4))
end do

end function

end program