PL/I and SAS flow charts

Supported languages

Visustin generates flow charts from PL/I and SAS source code. Convert your .pli, .pl1 and .sas files to flow charts automatically.

PL/I or PL/1 flowcharting support has been built according to IBM PL/I Language Reference, 10th Edition (Oct 2008). Visustin is not limited to IBM PL/I systems, though. The reference document is compatible with Enterprise PL/I for z/OS, PL/I for AIX and Rational Developer for System z PL/I for Windows.

SAS flowcharting support is current up to SAS (Statistical Analysis System) version 9.2. Visustin flowcharts both DATA step and SAS %macro code.

Supported statement types

PL/I and SAS resemble each other. Visustin supports the following statement types.

Statement typePL/ISAS
Conditional statementsIF..THEN..ELSEIF..THEN..ELSE, IF expr;
Multiway decisionSELECT..WHEN..OTHERWISESELECT..WHEN..OTHERWISE
LoopingDO..END;DO..END;
Loop exit and continueLEAVE, ITERATELEAVE, ITERATE
JumpGOTO, GO TOGOTO, GO TO, LINK
ReturnRETURNRETURN
End programEXIT, STOPABORT
Error handlingON
Error raisingSIGNAL, RESIGNAL
Inline dataCARDS, CARDS4, LINES, LINES4, DATALINES, DATALINES4, PARMCARDS, PARMCARDS4
Line numbers and labelsMyLine:MyLine:
Comments/* Comment *//* Comment */, *Comment;
Functions and sub-programsPROC, PROCEDURE, ENTRYDATA and PROC step
Pre-processing%preprocessor%macros

%Preprocessor directives and %macros. Visustin supports the extensive macro languages of PL/I and SAS. The default setting handles them as comments. To turn on full processing as flow chart symbols, use the Compiler directives setting in the Options menu.

Most other statements are handled as regular statements. Unhandled compiler directives are displayed as comments.

Fixed length, variable length and sequence numbers

PL/I and SAS code can exist in either a fixed line length with pre-defined columns or a variable line length. For flowcharting needs only the actual source code is required. Sequence numbers, printer control columns or any other extra columns must be detected and removed.

PL/I

Visustin supports both variable format and fixed format PL/I. Visustin attempts to auto-detect fixed format PL/I code and removes sequence numbers when found. Rules:

  1. Look for a *PROCESS MARGINS or %PROCESS MARGINS line. If found, use the setting in it.
  2. If not found, look for sequence numbers in the 8 last columns (typically 73..80) and columns 1..8. Remove if found. Sequence numbers are assumed exactly 8 characters long.

If Visustin does not correctly detect the PL/I format, manually add *PROCESS MARGINS(n,m) as the first line of code, where n=first column, m=last column. Example: *PROCESS MARGINS(2,72) processes code in columns 2..72 ignoring other columns.

SAS

Visustin only supports variable length SAS code. If your SAS code is in a fixed format or if it uses a sequence number column, use an external utility to remove any extra columns and convert the source files in a variable length format.

EBCDIC

If your files are in EBCDIC, set the encoding option to an EBCDIC codepage before loading the files in Visustin.

Unsupported constructs

The following statement types are unsupported. Unsupported means you see the code in the graph as a normal statement, not as a branch or a jump.

PL/I dialects

PL/I comes in several dialects such as PL/M, XPL, PL/P, PL/C, PL/S, PL/AS, PL/X, PL/8 and EPL. While we do not suggest that Visustin is fully compatible with them, we encourage you to try Visustin and report your findings to us. Visustin is tolerant of small syntactical changes and dialects and it can readily process subsets of PL/I. We may add proper support for PL/I dialects in a future version if there is demand.

©Aivosto Oy