The RESTORE command is not working in MMM.EXE rev 16 for VMS.

For example:
> suspend

ENTER FILENAME TO STORE IT UNDER (0 TO ABORT REQUEST)

?a.sav

YOUR CURRENT SITUATION IS SAVED AND WILL BE GOOD FOR ANY REVISION 16
YOU CAN NOW QUIT OR CONTINUE. ENTER RESTORE, AT ANY TIME, TO LOAD THE
SITUATION YOU SUSPENDED

WHEN YOU ARE FINISHED, PURGE THE FILE.

> restore

ENTER FILENAME IT WAS SUSPENDED UNDER (0 TO ABORT REQUEST)

?a.sav
%FOR-F-INPSTAREQ, input statement requires too much data
 unit 55  file DUA0:[GAMES]A.SAV;1
 user PC 0002278B
$

This can be fixed by changing a byte in mmm.exe:

$ patch mmm.exe
PATCH>depo/long
LOC>0002278B
NEW>5901043D
NEW>exit
old:    0002278B:  5901283D
new:    0002278B:  5901043D
PATCH>update
%PATCH-I-WRTFIL, updating image file DUA0:[GAMES]MMM.EXE;2

Using the new mmm.exe:

> restore

ENTER FILENAME IT WAS SUSPENDED UNDER (0 TO ABORT REQUEST)

?a.sav

YOU ARE NOW IN THE SAME SITUATION YOU WERE IN WHEN YOU SUSPENDED THIS DATA

WHEN YOU ARE FINISHED, PURGE THE FILE.

=== Explanation
The program was trying to read 40 words from a record with only 4 words.
Most likely a copy/paste mistake in the vms source code, since the previous record is 40 words long.

Reading from the record is done with a loop, i.e.

00022779:  MOVW    #01,R9
;read 40 words
0002277C:  CVTWL   R9,R0
0002277F:  PUSHAW  W^0DB6(R7)[R0]
00022784:  CALLS   #01,L^000288F8
0002278B:  ACBW    #28,#01,R9,0002277C

where #28 (i.e. 40) is the number of iterations.

Changing that to 4 fixes the bug.