# Assembler Programs

Provides details about the complexity metrics associated with Assembler Programs.

Metric Description
Absolute Complexity Number of Binary Decisions divided by the number of statements.
Binary Decisions Number of branch conditional opcodes where (mask != 'FF').
Conditional Complexity Number of Binary Decisions.
Conditional Statements Number of branch conditional opcodes where (mask != 'FF').
Cyclomatic Complexity Binary Decisions + 1.
Data Elements DC, DS.
Difficulty D = (n1 / 2) * (N2 / n2), where n1 is the number of Unique Operators, N2 is the number of Operands, and n2 is the number of Unique Operands.
Entry Points ENTRY,CSECT, plus user defined macros.
Error Estimate B = E^(2/3) / 3000, where E is Programming Effort.
Executable Statements Number of statements of kind computation, flow, internal calls, external calls, and some system macros; e.g. BAL, BAS BASM, BALR, BASR, BASSM CALL, SVC.
Extended Cyclomatic Complexity Cyclomatic Complexity plus the number of 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, ASM=1. Estimate of the number of end-user business functions implemented by the program.
Go To Statements The sum of unconditional and conditional Go To (If) statements: B,BR + Binary Decisions.
Inner Call Statements BAL, BAS.
Intelligent Content I = L * V, where L is the Program Level and V is the Program Volume. Complexity of a given algorithm independent of the language used to express the algorithm.
Lines Of Code Number of source lines in the program including copybooks.
Loop Statements BCT, BCTR, BXH, BXLE.
Operands Number of operands for computational statements.
Operators Number of computational statements. Operators can have zero, one or two Operands.
Program Length N = N1 + N2, where N1 is the number of Operators and N2 is the number of Operands.
Program Level L = 1 / D, where D is the program Difficulty.
Program Volume V = N * log2(n), where N is the Program Length and n is the program Vocabulary. Minimum number of bits required to code the program.
Programming Effort E = V / L, where V is the Program Volume and L is the 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.
Returning Calls Inner Call Statements + External Calls [(BAL, BAS) + (CALL, SVC, BASM, BALR, BASR, BASSM)].
Unique operands Number of unique operands.
Unique operators Number of unique operators.
Vocabulary n = n1 + n2, where n1 is the number of Unique Operators and n2 is the number of Unique Operands.