Algol allowed arrays to have as many dimensions as the user wanted to declare. Algol used strong typing. This means that all variables have a particular type and can not be arbitrarily changed from one to the other without some sort of type conversion. For instance one can not add 3 to a variable that contains a character. This is much safer since any mistake on the part of a programmer is caught by the compiler instead of the compiler making decisions that may be incorrect.
Dynamic arrays are possible in Algol.
This meant that array sizes did not need to be known at compile time but could be determined at runtime. Any of the control statements allowed only one statement in the body. Multiple statements could be placed there by making a compound statement. A compound statement consists of a begin-end block around multiple statements. Algol allowed procedures to be called recursively.