File: array_slice_02.f90

package info (click to toggle)
lfortran 0.58.0-3
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 54,508 kB
  • sloc: cpp: 162,179; f90: 68,251; python: 17,476; ansic: 6,278; yacc: 2,334; sh: 1,317; fortran: 892; makefile: 34; javascript: 15
file content (33 lines) | stat: -rw-r--r-- 747 bytes parent folder | download | duplicates (4)
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