In a language that doesn't support pointers, such as Fortran, if you want to port a program that uses pointers, you have to simulate pointers with array indices. The array implementation of the queue ADT is actually an example of how this is done. It uses index variables to point to the front and rear elements of the array. Because the used portion of the array moves along to the right as the queue is used, it must eventually "wrap around" into a circular topology (as shown on page 368 of MS). This suggests that a linked list "ring" implementation might be a more natural way to implement a queue ADT.
However, one word of caution on terminology: an array used in such a way that indices (simulated pointers) wrap around is called a "circular array" but it is still identical in "structure" to an ordinary array. A linked list ring is actually implemented differently than a regular linked list. Note that the linked list implementation in MS does not use a ring.