Oberon is one of the confusing family of Oberons that come from a confusing family of Modulas that comes from Pascal. Most of them come from Niklaus Wirth or try to build on his ideas.
The reason I say confusing is that, for example, there's no one Oberon. There's Oberon, Oberon 2, Active Oberon etc [1]. They differ in things like
- they may or may not have things like for loops
- they may or may not have various OOP features
- they may or may not have pointers
- they may or may not have three different types of looping constructs with different constraints (you can exit a do loop, but not a while loop etc.)
and so on, depending on ... well depending on nothing but Wirth's ideas of what a programming language should be. There are at least two OSes built with Oberon: Oberon and Bluebottle.
There are fans of this family of languages, and I've even participated in discussions (on a Russian programming forum) where people would defend to the death the choice of three different loop constructs with different semantics (you can break inside LOOP, but not inside FOR or WHILE etc.), or the difference between procedure and function etc.
[1] https://en.wikipedia.org/wiki/Oberon_(programming_language)