The problem is that by default, `pgrep` only searches the process _name_. The name is a truncated version of the entire command. You can see what the name is by looking at `/proc/PID/status` where `PID` is the process ID of the relevant process. For example:
$ ./aout_abcdefgh_ver27 &
[1] 14255 ## this is the PID
$ grep Name /proc/14255/status
Name: aout_abcdefgh_v
So yes, `pgrep` with no flags only reads the first 15 characters of the executable's name. To search the full command line used to launch it, you need the `-f` flag (from `man pgrep`):
-f, --full
The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
So, if you use `-f`:
$ pgrep -f aout_abcdefgh_ver27
14255