It may not always be possible to detect directly the parallelism present in programs. Consider again the example of a transaction file and a master file, and an alternative coding:
READ TRANS-FILE AT END SET EOF TO TRUE
PERFORM UPDATE UNTIL EOF
...
UPDATE.
(... read master according to trans-rec; update master fields)
WRITE MASTER-REC
READ TRANS-FILE AT END SET EOF TO TRUE
...
Now the fields of the transaction record show a data flow dependence as they are being read at the iteration preceding the one in which they are used. To uncover the parallelism the code must be re-structured to the earlier form; similar transformations have been studied in the FORTRAN context (Banerjee et al., 1993).
Re-structuring may involve a series of transformations to increase the clarity of the source code, such as the removal of GO TO statements. In legacy COBOL programs, loops are often effected by GO TO backward branches.