https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95947
--- Comment #2 from urbanjost at comcast dot net --- Per feedback made test more like a unit test: TEST PROGRAM: character(len=:),allocatable :: m(:) !!NOTE: WORKS WITH len=10 instead of len=: logical :: passed m = [ character(len=10) :: 'ape','bat','cat','dog','eel','fly','gnu'] m = pack( m, mask=m(:)(2:2) == 'a' ) print *, "m = ", m, "; expected is ['bat','cat']" passed=all(m.eq.['bat','cat']) print *, "size(m) = ", size(m), "; expected is 2" passed=size(m).eq.2.and.passed print *, "len(m) = ", len(m), "; expected is 10" passed=len(m).eq.10.and.passed print *, "len_trim(m) = ", len_trim(m), "; expected is 3 3" passed=all(len_trim(m).eq.[3,3]).and.passed if(passed)then stop 'PASSED' else write(*,'("FAILED")') stop 1 endif end RESULTS: m = ; expected is ['bat','cat'] size(m) = 2 ; expected is 2 len(m) = 10 ; expected is 10 len_trim(m) = 0 0 ; expected is 3 3 FAILED STOP 1