| 3-Maintainability | 3-MI = 171 - 5.2 * ln (PgmVolume) - 0.23 * ExtCycComp - 16.2 * ln (LOC), where PgmVolume is Program Volume, ExtCycComp is
                           Extended Cyclomatic Complexity, and LOC is Lines of Code. | 
 
                     			 
                      
                        				
                        | Absolute Complexity | Binary Decisions divided by the number of statements. | 
 
                     			 
                      
                        				
                        | Asynchronous Calls | Number of asynchronous calls, such as Cobol INITIATE statements. | 
 
                     			 
                      
                        				
                        | Binary Decisions | Number of branching conditions in the flow graph with two possible outcomes. Includes statements with implicit condition evaluation
                           (loops, AT END, and so on). | 
 
                     			 
                      
                        				
                        | Computational Statements | Number of statements performing arithmetic calculations. | 
 
                     			 
                      
                        				
                        | Conditional Complexity | Binary Decisions, plus Unique Operands in Conditions. | 
 
                     			 
                      
                        				
                        | Conditional Statements | Number of branching statements with nested statements executed under certain conditions. | 
 
                     			 
                      
                        				
                        | Conditional Statements | Number of branching statements with nested statements executed under certain conditions. | 
 
                     			 
                      
                        				
                        | Cyclomatic Complexity | v(G) = e - n + 2, where v(G) is the cyclomatic complexity of the flow graph (G) for the program in question, e is the number
                           of edges in G, and n is the number of nodes. Quantity of decision logic. The number of linearly independent paths (minimum
                           number of paths to be tested). v(G) = DE + 1, where DE is the number of binary decisions made in the program. | 
 
                     			 
                      
                        				
                        | Data Elements | Number of declared data items (elementary structures and their fields). | 
 
                     			 
                      
                        				
                        | Dead Data Elements | Number of dead data elements in programs and used include files. Dead data elements are unused structures at any data level,
                           all of whose parents and children are unused. | 
 
                     			 
                      
                        				
                        | Dead Data Elements from Includes | Number of dead data elements in include files. Dead data elements are unused structures at any data level, all of whose parents
                           and children are unused. | 
 
                     			 
                      
                        				
                        | Dead Lines | Number of dead lines in programs and used include files. Dead lines are source lines containing Dead Data Elements or Dead
                           Statements. | 
 
                     			 
                      
                        				
                        | Dead Lines from Includes | Number of dead lines in include files. Dead lines are source lines containing Dead Data Elements from Includes or Dead Statements
                           from Includes. | 
 
                     			 
                      
                        				
                        | Dead Statements | Number of dead statements in programs and used include files. A dead statement is a procedural statement that can never be
                           reached during program execution. | 
 
                     			 
                      
                        				
                        | Dead Statements from Includes | Number of dead statements in include files. A dead statement is a procedural statement that can never be reached during program
                           execution. | 
 
                     			 
                      
                        				
                        | Difficulty | D = (n1 / 2) * (N2 / n2), where n1 is Unique Operators, N2 is Operands, and n2 is Unique Operands. | 
 
                     			 
                      
                        				
                        | Entry Points | Number of program entry points. | 
 
                     			 
                      
                        				
                        | Error Estimate | B = E**(2/3) / 3000, where E is Programming Effort. | 
 
                     			 
                      
                        				
                        | Essential Complexity | Quantity of unstructured logic (a loop with an exiting GOTO statement, for example). v(G) for reduced graph without D-structured
                           primes. | 
 
                     			 
                      
                        				
                        | Executable Statements | All statements, except DEFINE DATA and IGNORE. | 
 
                     			 
                      
                        				
                        | Extended Cyclomatic Complexity | Cyclomatic Complexity, plus Logical Operators in Conditions. Number of all paths in the program. | 
 
                     			 
                      
                        				
                        | Function Points | Lines of Code divided by K, where K depends on the language: Cobol=77, Natural=52, PL/I=67. Estimate of the number of end-user
                           business functions implemented by the program. | 
 
                     			 
                      
                        				
                        | GoTo Statements | Number of GOTO statements, including conditional GOTOs. | 
 
                     			 
                      
                        				
                        | Inner Call Statements | Number of statements that invoke Inner Procedures. | 
 
                     			 
                      
                        				
                        | Inner Procedures | Number of structured pieces of code that cannot be invoked from external programs: Natural inline subroutines. | 
 
                     			 
                      
                        				
                        | Intelligent Content | I = L * V, where L is Program Level and V is Program Volume. Complexity of a given algorithm independent of the language used
                           to express the algorithm. | 
 
                     			 
                      
                        				
                        | IO Statements | Number of statements performing input/output operations. | 
 
                     			 
                      
                        				
                        | Lines of Code | Number of lines of code, plus the number of lines of code in included files and any files they include. Comments and blank
                           lines are not counted. | 
 
                     			 
                      
                        				
                        | LINK Statements | Number of CICS LINK statements. | 
 
                     			 
                      
                        				
                        | Logical Operators in Conditions | Number of binary logical operators used in conditions. | 
 
                     			 
                      
                        				
                        | Loop Statements | Number of repetitively executing statements. | 
 
                     			 
                      
                        				
                        | Maintainability Index | MI = 171 - 5.2 * ln (PgmVolume) - 0.23 * ExtCycComp - 16.2 * ln (LOC) + 50 * sin (sqrt (2.46 * CommentLines/SourceLines)),
                           where PgmVolume is Program Volume, ExtCycComp is Extended Cyclomatic Complexity, LOC is Lines of Code, CommentLines is Comment
                           Lines, and SourceLines is Source Lines. | 
 
                     			 
                      
                        				
                        | Nesting Level | Maximum nesting of conditional statements within conditional statements (0 if no conditional statements, 1 if no nesting). | 
 
                     			 
                      
                        				
                        | Non-returning Calls | Number of non-returning calls, such as Cobol XCTL statements. | 
 
                     			 
                      
                        				
                        | Operands | Number of operand occurrences (N2). Operands are variables and literals used in operators. Compare Unique Operands. | 
 
                     			 
                      
                        				
                        | Operators | Number of operator occurrences (N1). Operators are executable statements and unary and binary operations. Compare Unique Operators. | 
 
                     			 
                      
                        				
                        | Parameters | Number of Natural PARAMETER and PARAMETER USING parameters. | 
 
                     			 
                      
                        				
                        | Pointers | Number of data elements declared as pointers. | 
 
                     			 
                      
                        				
                        | Program Length | N = N1 + N2, where N1 is Operators and N2 is Operands. | 
 
                     			 
                      
                        				
                        | Program Level | L = 1 / D, where D is Difficulty. | 
 
                     			 
                      
                        				
                        | Program Volume | V = N * log2(n), where N is Program Length and n is Vocabulary. Minimum number of bits required to code the program. | 
 
                     			 
                      
                        				
                        | Programming Effort | E = V / L, where V is Program Volume and L is Program Level. Estimated mental effort required to develop the program. | 
 
                     			 
                      
                        				
                        | Programming Time | T = E / 18, where E is the Programming Effort and 18 is Stroud’s Number. Estimated amount of time required to implement the
                           algorithm, in seconds. | 
 
                     			 
                      
                        				
                        | Response for Class | Response for class. | 
 
                     			 
                      
                        				
                        | Returning Calls | Number of returning calls. | 
 
                     			 
                      
                        				
                        | Unique Operands | Number of distinct operands (n2). Operands are variables and literals used in operators. Uniqueness of literals is determined
                           by their notation. Compare Operands. | 
 
                     			 
                      
                        				
                        | Unique Operands in Conditions | Number of distinct operands used in conditions. | 
 
                     			 
                      
                        				
                        | Unique Operators | Number of distinct operators (n1). Operators are executable statements and unary and binary operations. Compare Operators. | 
 
                     			 
                      
                        				
                        | Vocabulary | n = n1 + n2, where n1 is the number of Unique Operators and n2 is the number of Unique Operands. |