The status returned by allocate is system dependent. Hence, to check what status “38” means you need to add a check in your program using a call to ‘perror’.
For example:
program testerr
real, allocatable, dimension(:) :: arr
integer :: astat
character(255) :: err_msg
allocate(arr(1000), stat=astat)
if (astat > 0) then
err_msg = 'Allocate failed with message '
call perror(trim(err_msg))
endif
end program