I think it is an error in format statement.
First off ; get rid of all STOP statements ... those are used only for fatal error traps.
Next : get rid of all RETURN statements .. they are redundant : END is the same as RETURN.
When you compiler gives error report it will tell you line # of error ... use it.
First output for write statement is 1X in the format statement.
This is required for proper page control (first out is page control).
Example:
WRITE(*,'(1X,1P5E10.3)') FOM0,FOM1,FOM2,FOM3,FOM4
Don't use the literal passing, no reason to go this complicated method and it's all wrong anyway, just pass the arguments like in first method.
Invert not too much more complicated than multiply :
[itex]
\[
\,[Z] = \frac{1}{{Y_{11} (Y_{22} Y_{33}  Y_{23} Y_{32} ) + Y_{12} (Y_{31} Y_{23}  Y_{21} Y_{33} ) + Y_{13} (Y_{21} Y_{32}  Y_{31} Y_{22} )}} \cdot \left[ {\begin{array}{*{20}c}
{Y_{22} Y_{33}  Y_{23} Y_{32} } \hfill & {Y_{13} Y_{32}  Y_{12} Y_{33} } \hfill & {Y_{12} Y_{23}  Y_{13} Y_{22} } \hfill \\
{Y_{31} Y_{23}  Y_{21} Y_{33} } \hfill & {Y_{11} Y_{33}  Y_{13} Y_{31} } \hfill & {Y_{13} Y_{21}  Y_{23} Y_{11} } \hfill \\
{Y_{21} Y_{32}  Y_{31} Y_{22} } \hfill & {Y_{31} Y_{12}  Y_{32} Y_{11} } \hfill & {Y_{11} Y_{22}  Y_{12} Y_{21} } \hfill \\
\end{array}} \right]
\]
[/itex]
If you are gonna do the invert, make sure to prove the above (maybe i blew a subscript).
Best
