Contents

1 Introduction

1.1 Overview

1.2 Installation

1.3 Licensing

1.4 Configuration Files

1.5 Command line Arguments

1.6 Exit Codes

2 SPAG - Renovation & Analysis

2.1 Introduction

2.1.1 What does it do?

2.1.2 Code Restructuring

2.1.3 Code Replication

2.1.4 Translation to Fortran 95

2.1.5 Adding or Rewriting Declarations

2.1.6 Translation of VAX Structures

2.1.7 Clutter Removal

2.1.8 Renaming Variables

2.1.9 Define a Corporate Style

2.1.10 Dynamic Analysis

2.1.11 Coverage Analysis

2.1.12 Symbol Table Files

2.2 Source Language

2.3 Organizational Considerations

2.4 The SPAG Command Line

2.5 The SPAG Configuration File

2.6 SPAG Configuration Data

2.7 Using SPAG

2.7.1 Adding Declarations

2.7.2 Adding Declarations to INCLUDEd files

2.7.3 Rewriting Declarations

2.7.4 Interface Modules

2.7.5 Include File Modules

2.7.6 COMMON block Modules

2.7.7 Removing Clutter

2.7.8 Renaming Symbols

2.7.9 The 'ASIS' Directive

2.7.10 The ANCHOR Directive

2.7.11 Comments in Restructured Code

2.7.12 Using Case to make Programs more Readable

2.7.13 Symbol Table Output

2.7.14 Some Pitfalls

2.8 Dynamic Analysis

2.8.1 What is it?

2.8.2 Worked Example

2.8.3 Dynamic Analysis using SPAG

2.8.4 COMMON Variables

2.8.5 Initialized COMMON Variables

2.8.6 Summary

2.8.7 False Positives

2.8.8 Mixed Code

2.8.9 EQUIVALENCE & Dynamic Analysis

2.8.10 Static or Dynamic?

2.9 Coverage Analysis

2.10 Processing Fortran 95 Modules

3 GXCHK - Global Cross Checks

3.1 Introduction

3.1.1 Information Warning and Error Messages

3.1.2 Static Analysis Documentation

3.1.3 Per Symbol Reports

3.1.4 Source Code Amendments

3.2 The GXCHK Command Line

3.3 The GXCHK Configuration File

3.4 GXCHK Configuration Data

3.5 Using GXCHK

3.5.1 COMMON Variable Consistency

3.5.2 Symbol Table Size

3.5.3 Name Clashes

3.5.4 GXCHK Messages

3.5.5 Some Pitfalls

3.6 Interface Summaries

3.6.1 What Are They?

3.6.2 Dummy Arguments

3.6.3 External Subprograms

3.6.4 COMMON Variables

3.6.5 Local Variables and PARAMETERs

3.7 Modularization Reports

3.7.1 What Are They?

3.7.2 Internalization Reports

3.7.3 Flattening the Calling Structure

3.7.4 Cluster Analysis Reports

3.7.5 Planning Modularization

4 CVRANAL - Coverage Analysis

4.1 Introduction

4.2 The CVRANAL Command Line

4.3 The CVRANAL Configuration File

4.4 CVRANAL Configuration Data

4.5 Using CVRANAL

4.5.1 Source Code Changes

4.5.2 Execution Count Overflow

4.5.3 Troubleshooting

5 QMERGE - Version Selection

5.1 What Does it Do?

5.2 The QMERGE Command Line

5.3 Specifying Conditions

5.4 Source Code Directives

6 QSPLIT

6.1 Use of QSPLIT

6.2 Example of Merged File

7 AUTOMAKE - Automated Compile & Link for Fortran and C

7.1 Introduction

7.1.1 What does it do?

7.1.2 How does it do that?

7.1.3 How do I set it up?

7.1.4 What can go wrong?

7.2 Running AUTOMAKE

7.3 The AUTOMAKE Configuration File

7.4 Multi-Phase Compilation

7.5 Notes

8 PFFE - plusFORT Front End

8.1 Introduction

8.2 The Working Directory

8.3 Configuration Pages

8.4 Running SPAG and GXCHK

8.5 Running CVRANAL

8.6 Running HyperKWIC

Appendix A - Symbol Table Format

Appendix B - Probe Routines