1.-I have wondered why we can't have in pascal a "step" statement inside the [for-to] that allows us to jump the index in a direct and clean way, to the well-known 1+1?.
It would be nice but, personally, it's really very rare that I need it. IOW, I don't miss it.
2.-Also why the [ Case of ] statement, does not facilitate us to work with variables as a string, or other useful types.... I believe that this would help to write an easier and cleaner code in many cases of programming.
A "case" statement that not only accepts variables but, accepts _multiple_ variables, IOW, a multi-variate table. It's amazing how much cleaner some code gets when a facility like that is available. COBOL85 has it (it's called "evaluate") but, for a significant percentage of programmers, the fact that the feature is present in COBOL is enough to put it down with "disdain". That's very unfortunate.
But it would be unwise to declare a temporary index to traverse [for-to] blocks. If a variable is meant to be used only once, why declare it in a global section of a function or procedure and not do it locally (inline)?
That's a valid point. The real, solid solution that is perfectly in line with Pascal's spirit is to have local/inline _scopes_. An inline scope is like a function/procedure that is not callable but, has its own local constants, type and var sections along with its code. If I recall correctly, ADA implements local scopes, a great feature to keep code clean and easy to maintain.
The real problem with Pascal is that there isn't a group of language experts analyzing the language non-stop and creating a new standard every few years. Instead, whatever someone thinks is a good idea (which may or may not be the case) and has some influence in the development of a compiler is a close to deciding factor for it to be implemented. With that as "methodology", the result is usually a "mixed bag" with inconsistencies in many corners.