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.
PL/I and SAS resemble each other. Visustin supports the following statement types.
| Statement type | PL/I | SAS |
|---|---|---|
| Conditional statements | IF..THEN..ELSE | IF..THEN..ELSE, IF expr; |
| Multiway decision | SELECT..WHEN..OTHERWISE | SELECT..WHEN..OTHERWISE |
| Looping | DO..END; | DO..END; |
| Loop exit and continue | LEAVE, ITERATE | LEAVE, ITERATE |
| Jump | GOTO, GO TO | GOTO, GO TO, LINK |
| Return | RETURN | RETURN |
| End program | EXIT, STOP | ABORT |
| Error handling | ON | |
| Error raising | SIGNAL, RESIGNAL | |
| Inline data | CARDS, CARDS4, LINES, LINES4, DATALINES, DATALINES4, PARMCARDS, PARMCARDS4 | |
| Line numbers and labels | MyLine: | MyLine: |
| Comments | /* Comment */ | /* Comment */, *Comment; |
| Functions and sub-programs | PROC, PROCEDURE, ENTRY | DATA 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.
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.
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:
*PROCESS MARGINS or %PROCESS MARGINS line. If found, use the setting in it.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.
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.
If your files are in EBCDIC, set the encoding option to an EBCDIC codepage before loading the files in Visustin.
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 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.