function encode_ascii_dataarray3_rank3_I1P(x, y, z) result(code)
!< Encode (Base64) a dataarray with 3 components of rank 3 (I1P).
integer(I1P), intent(in) :: x(1:,1:,1:) !< X component.
integer(I1P), intent(in) :: y(1:,1:,1:) !< Y component.
integer(I1P), intent(in) :: z(1:,1:,1:) !< Z component.
character(len=:), allocatable :: code !< Encoded base64 dataarray.
integer(I4P) :: n1 !< Counter.
integer(I4P) :: n2 !< Counter.
integer(I4P) :: n3 !< Counter.
integer(I4P) :: l !< Length
integer(I4P) :: sp !< String pointer
integer(I4P) :: size_n1 !< Dimension 1 size
integer(I4P) :: size_n2 !< Dimension 2 size
integer(I4P) :: size_n3 !< Dimension 3 size
size_n1 = size(x, dim=1)
size_n2 = size(x, dim=2)
size_n3 = size(x, dim=3)
l = DI1P*3 + 2
sp = 0
code = repeat(' ',l*size_n1*size_n2*size_n3)
do n3=1, size(x, dim=3)
do n2=1, size(x, dim=2)
do n1=1, size(x, dim=1)
code(sp+1:sp+l) = str(n=x(n1, n2, n3))//' '//str(n=y(n1, n2, n3))//' '//str(n=z(n1, n2, n3))
sp = sp + l
enddo
enddo
enddo
endfunction encode_ascii_dataarray3_rank3_I1P