That's more likely copied from the functional programming world (ML / Miranda / Haskell). And they got it from Lisp's "let" form.
Wirth's languages always had a very strict separation between variable declarations and code. Your example might look something like this in Pascal:
PROCEDURE foo;
VAR mnist: MNistRecord;
x_train: XTrainRecord;
BEGIN
mnist := load_mnist(true);
...