This part of the MMEL specification defines the measurement and validation features of the Multi-Modal Modelling Language (MMEL). Measurements provide quantitative monitoring of process KPIs, enabling compliance engineers and system architects to define, collect, and validate numeric values against process requirements.
Measurements complement provisions by providing quantitative compliance checks: while provisions define qualitative requirements ("the organization shall establish documented policies"), measurements define quantitative thresholds ("the failed login rate shall not exceed 40%").
Measurements in MMEL form a layered architecture connecting data collection to process validation:
NUMERIC ───────────────────────────────────> single value
DATALIST ──── .max, .min, .sum, ──────────> aggregation
.count, .average
DERIVED ───── "[A].sum / [B]" ────────────> computed expression
TRUE/FALSE ── boolean toggle ──────────────> conditional branching
DURATION ──── time span ───────────────────> temporal monitoring
TEXT ──────── text input ──────────────────> qualitative data
TABLE_REFERENCE ─ lookup from table ──────> data-driven value
TABLE_OPTIONS ── options from table ───────> selectable options
|
+-- validate_measurement { "[X] >= 0.95" }
|
+-- Evaluated against process KPIs
Measurements connect to processes through two mechanisms:
MMEL distinguishes two categories of measurements:
Measurements support two usage modes:
This part builds on the core MMEL syntax defined in MN 113 and relates to other parts as follows:
MMEL supports the following measurement types. Each type defines how the measurement value is collected, stored, and used in validation expressions.
A single numeric value. Used for scalar measurements such as counts, percentages, voltages, or any single quantitative value.
measurement <MeasurementID> {
type NUMERIC
description "Human-readable description"
}
measurement NumFailLogin {
type NUMERIC
description "Number of failed login attempts"
}
measurement NumLogin {
type NUMERIC
description "Number of login attempts"
}
measurement OpV {
type NUMERIC
description "Maximum permanent operating voltage"
}
measurement thickness {
type NUMERIC
description "Radial thickness of the insulation"
}
In validation expressions, NUMERIC values are referenced directly:
[OpV] <= 820
,
[thickness] >= [thicknessReq] * 0.9 - 0.1
.
A list (collection) of numeric values. Supports aggregation operators for computing statistics over the list.
measurement <MeasurementID> {
type DATALIST
description "Human-readable description"
}
DATALIST measurements support the following aggregation operators:
| Operator | Description |
|---|---|
.max
|
Maximum value in the list |
.min
|
Minimum value in the list |
.sum
|
Sum of all values in the list |
.count
|
Number of values in the list |
.average
|
Arithmetic mean of all values in the list |
measurement NumConnection {
type DATALIST
description "Number of connections within 10 seconds (for each user)"
}
measurement Excluded_Emission {
type DATALIST
description "Excluded emissions"
}
measurement Included_Emission {
type DATALIST
description "Emissions of the subject (including Scope 1, Scope 2 and Scope 3)"
}
In validation expressions, DATALIST values use aggregation operators:
[NumConnection].max <= 100
,
[Included_Emission].sum / [Total_Emission]
.
A computed value derived from other measurements using a mathematical
expression. The
definition
field is required and contains the computation
formula.
measurement <MeasurementID> {
type DERIVED
definition "<expression>"
description "Human-readable description"
}
The
definition
field contains an expression that references other
measurement IDs using the
[MeasurementID]
notation, with optional
aggregation operators and arithmetic operations.
measurement Total_Emission {
type DERIVED
definition "[Included_Emission].sum + [Excluded_Emission].sum"
description "Total emission"
}
measurement Largest_Emission_In_Percentage {
type DERIVED
definition "[Included_Emission].max / [Total_Emission]"
description "The largest emission source"
}
measurement Total_Emission_Excluded_Max {
type DERIVED
definition "[Total_Emission] - [Included_Emission].max"
description "The total emission excluding the largest emission"
}
measurement Excluded_Emssions_Without_Max_In_Percentage {
type DERIVED
definition "[Excluded_Emission].sum / [Total_Emission_Excluded_Max]"
description "Percentage of excluded emissions"
}
measurement Total_Included_Emissions_In_Percentage {
type DERIVED
definition "[Included_Emission].sum / [Total_Emission]"
description "Percentage of all included emissions"
}
DERIVED measurements can reference other DERIVED measurements, creating computation chains. The order of evaluation follows the dependency graph.
A boolean toggle measurement. Used for conditional branching in gateway edges and for binary conditions in validation expressions.
measurement <MeasurementID> {
type TRUE/FALSE
description "Human-readable description"
}
measurement dc {
type TRUE/FALSE
description "The cable is for d.c."
}
measurement target {
type TRUE/FALSE
description "The cable is for conductor-conductor"
}
measurement implant {
type TRUE/FALSE
description "There is implantable medical device"
}
measurement outsourcing {
type TRUE/FALSE
description "There is outsourcing"
}
In gateway edge conditions, TRUE/FALSE measurements are compared with
string literals:
[dc] = 'true'
,
[target] = 'true'
.
A temporal duration value representing a time span. Used for timer events and time-based monitoring.
measurement <MeasurementID> {
type DURATION
description "Human-readable description"
}
measurement AuditTimer {
type DURATION
}
measurement CompetenceReviewTimer {
type DURATION
}
DURATION measurements are used with timer events to define temporal conditions.
A text input measurement. Used for qualitative data collection where the value is a free-text string rather than a numeric value.
measurement <MeasurementID> {
type TEXT
description "Human-readable description"
}
measurement ComplianceNote {
type TEXT
description "Additional compliance notes"
}
TEXT measurements are referenced in validation expressions for string comparisons.
A measurement whose value is looked up from a table within the model. Used for data-driven specifications where the required value depends on other parameters (e.g. cable type and cross-sectional area determine the required insulation thickness).
measurement <MeasurementID> {
type TABLE_REFERENCE
definition "<table_name>,<column_index>,<filter_spec>,..."
description "Human-readable description"
}
The
definition
field contains a comma-separated lookup specification.
See
table-lookup
for full documentation of the lookup syntax.
measurement thicknessReq {
type TABLE_REFERENCE
definition "data,4,0,type,2,area,3,class"
description "Requirement of the radial thickness of insulation"
}
measurement sheathReq {
type TABLE_REFERENCE
definition "data,5,0,type,2,area,3,class"
description "Requirement of radial thickness of sheath"
}
measurement isCircular {
type TABLE_REFERENCE
definition "data,13,0,type"
description "Is the cable circular"
}
A measurement that provides selectable options from a table. Used for parameterized model views where the user selects from a set of valid options determined by table data.
measurement <MeasurementID> {
type TABLE_OPTIONS
definition "<table_name>,<column_index>,<filter_spec>,..."
description "Human-readable description"
}
The
definition
field uses the same lookup syntax as TABLE_REFERENCE but
returns matching rows as selectable options rather than a single value.
See
table-lookup
for full documentation.
measurement type {
type TABLE_OPTIONS
definition "data,0,2,area,3,class"
description "Type of cable (e.g., 6181Y)"
}
measurement area {
type TABLE_OPTIONS
definition "data,2,0,type,3,class"
description "Nominal cross-sectional area of conductors"
}
measurement class {
type TABLE_OPTIONS
definition "data,3,2,area,0,type"
description "Class of conductor (1 / 2)"
}
The DATAITEM measurement type is deprecated and superseded by NUMERIC. It was used in earlier versions of MMEL for single numeric values.
measurement <MeasurementID> {
type DATAITEM
description "Human-readable description"
}
DATAITEM is documented here for backward compatibility only. New models SHALL use the NUMERIC type instead. Tools SHALL accept DATAITEM for backward compatibility but SHOULD emit a deprecation warning.
| Type | Category | Description |
|---|---|---|
NUMERIC
|
User-defined | Single numeric value |
DATALIST
|
User-defined | List of numeric values with aggregation operators |
DERIVED
|
Computed | Formula referencing other measurements |
TRUE/FALSE
|
User-defined | Boolean toggle for conditional branching |
DURATION
|
User-defined | Time span for temporal monitoring |
TEXT
|
User-defined | Free-text input |
TABLE_REFERENCE
|
Lookup | Single value looked up from a table |
TABLE_OPTIONS
|
Lookup | Selectable options from a table |
DATAITEM
|
User-defined | Deprecated single numeric value (use NUMERIC) |
Validation expressions are used in
validate_measurement
properties on
processes to define quantitative conditions that must be met for a process to
be considered compliant. They reference measurement IDs and apply comparison,
arithmetic, and list aggregation operators.
process <ProcessID> {
name "Process name"
validate_measurement {
"<measurement expression>"
}
}
The expression is a string containing measurement references, operators, and literal values.
Measurements are referenced using square bracket notation:
[MeasurementID]
This references the current value of the named measurement. For DATALIST measurements, aggregation operators may be appended:
[MeasurementID].max
[MeasurementID].min
[MeasurementID].sum
[MeasurementID].count
[MeasurementID].average
| Operator | Description |
|---|---|
>=
|
Greater than or equal to |
<=
|
Less than or equal to |
=
|
Equal to |
>
|
Greater than |
<
|
Less than |
| Operator | Description |
|---|---|
+
|
Addition |
-
|
Subtraction |
*
|
Multiplication |
/
|
Division |
List operators are applied to DATALIST measurements to compute aggregate values:
| Operator | Description |
|---|---|
.max
|
Returns the maximum value in the list |
.min
|
Returns the minimum value in the list |
.sum
|
Returns the sum of all values in the list |
.count
|
Returns the number of values in the list |
.average
|
Returns the arithmetic mean of all values in the list |
Expression evaluation follows this order of precedence (highest to lowest):
Parentheses may be used to override the default precedence.
For TRUE/FALSE measurements, the comparison uses string literals:
[dc] = 'true'
[target] = 'true'
The value ’ true ‘ and ’ false ‘ are string comparisons against the boolean measurement value.
From the BS 6004 model -- voltage validation:
process RatedVoltageEarthAC {
name "Rated Voltage for conductor-earth (ac)"
validate_provision {
Provision6
}
validate_measurement {
"[OpV] <= 320"
}
}
process RatedVoltageConductorAC {
name "Rated Voltage for conductor-conductor (ac)"
validate_provision {
Provision7
}
validate_measurement {
"[OpV] <= 550"
}
}
process RatedVoltageEarthDC {
name "Rated Voltage for conductor-earth (dc)"
validate_provision {
Provision8
}
validate_measurement {
"[OpV] <= 410"
}
}
process RatedVoltageConductorDC {
name "Rated Voltage for conductor-conductor (dc)"
validate_provision {
Provision9
}
validate_measurement {
"[OpV] <= 820"
}
}
From the RiboseImplementation model -- failed login ratio:
process FailedLoginMonitor {
name "Failed login monitoring"
validate_measurement {
"[NumFailLogin] / [NumLogin] <= 0.4"
}
}
From the RiboseImplementation model -- traffic monitoring:
process TrafficMonitor {
name "Traffic monitor"
validate_measurement {
"[NumConnection].max <= 100"
}
}
From the PAS 2060 model -- emission coverage:
process ApplyOverallCoverageRule {
name "Apply the overall coverage principle"
actor entity
modality SHALL
validate_provision {
Provision47
}
validate_measurement {
"[Total_Included_Emissions_In_Percentage] >= 0.95"
}
}
From the PAS 2060 model -- excluded emission validation:
process AlternativeCoverageValidation {
name "Apply the alternative coverage principle"
actor entity
modality SHALL
validate_provision {
Provision46
}
validate_measurement {
"[Excluded_Emssions_Without_Max_In_Percentage] < 0.05"
}
}
process ExcludeEmissionSource {
name "Exclude emission source"
actor entity
modality MAY
validate_provision {
Provision45
Provision48
Provision98
Provision99
}
validate_measurement {
"[Excluded_Emission].max / [Total_Emission] < 0.01"
}
}
From the BS 6004 model -- insulation thickness with tolerance:
process InsulationThickness {
name "Thickness"
validate_provision {
Provision15
Provision16
}
validate_measurement {
"[thickness] >= [thicknessReq] * 0.9 - 0.1"
}
}
This expression allows a 10% tolerance minus 0.1 units from the table-looked-up requirement value.
TABLE REFERENCE and TABLE OPTIONS are measurement types that look up values from tables defined within the same model. They enable data-driven specifications where the required value or valid options depend on other measurement parameters.
TABLE_REFERENCE returns a single value from a table by column lookup. It is used when a specification requires looking up a specific value (e.g. insulation thickness requirement) based on parameter combinations (e.g. cable type, cross-sectional area, conductor class).
measurement <MeasurementID> {
type TABLE_REFERENCE
definition "<table_name>,<column_index>,<filter_column>,<filter_data>,..."
description "Human-readable description"
}
The
definition
field contains a comma-separated lookup specification with
the following structure:
<table_name>,<target_column>,<filter1_column>,<filter1_data>,<filter2_column>,<filter2_data>,...
| Component | Description |
|---|---|
table_name
|
The ID of the table construct to look up from. |
target_column
|
The column index to retrieve the value from. Column indices start at 0. |
filter_column
|
The column index to filter on. |
filter_data
|
The measurement ID whose value is used as the filter criterion. |
Column indices start at 0 (the first column is index 0, the second is 1, etc.).
The BS 6004 model (cable specifications) uses TABLE_REFERENCE extensively with 67 records across Tables 3--6:
measurement thicknessReq {
type TABLE_REFERENCE
definition "data,4,0,type,2,area,3,class"
description "Requirement of the radial thickness of insulation"
}
This definition means:
Additional TABLE_REFERENCE measurements:
measurement sheathReq {
type TABLE_REFERENCE
definition "data,5,0,type,2,area,3,class"
description "Requirement of radial thickness of sheath"
}
measurement isCircular {
type TABLE_REFERENCE
definition "data,13,0,type"
description "Is the cable circular"
}
The
sheathReq
measurement uses the same filter chain but targets column 5
instead of column 4. The
isCircular
measurement uses only one filter
(column 0 matching
type
).
TABLE_OPTIONS returns matching rows as selectable options. It is used for parameterized model views where the user selects from a set of valid options determined by table data and current measurement values.
measurement <MeasurementID> {
type TABLE_OPTIONS
definition "<table_name>,<target_column>,<filter_column>,<filter_data>,..."
description "Human-readable description"
}
The definition format is identical to TABLE_REFERENCE. The difference is in the result: TABLE_OPTIONS returns all distinct matching values from the target column as a set of selectable options.
measurement type {
type TABLE_OPTIONS
definition "data,0,2,area,3,class"
description "Type of cable (e.g., 6181Y)"
}
measurement area {
type TABLE_OPTIONS
definition "data,2,0,type,3,class"
description "Nominal cross-sectional area of conductors"
}
measurement class {
type TABLE_OPTIONS
definition "data,3,2,area,0,type"
description "Class of conductor (1 / 2)"
}
These three measurements form a mutually-filtering set:
When the user selects a value for one, the options for the others are narrowed accordingly.
The lookup process follows these steps:
When no matching row is found in the table:
When multiple rows match and the target column has different values:
Column indices in the definition string start at 0:
| Index | Column |
|---|---|
| 0 | First column |
| 1 | Second column |
| 2 | Third column |
| ... | ... |
| N | Column N+1 |
The BS 6004 model demonstrates table lookup at scale:
View profiles provide a mechanism for parameterized model views. A view profile pre-sets measurement data with default values, editability toggles, and importance settings, allowing users to customize the model view based on their specific parameters without modifying the underlying model.
view_profile <ProfileID> {
parameter <MeasurementID> {
default "<default-value>"
editable true | false
setting RECOMMEND | MUST
}
parameter <MeasurementID> {
default "<default-value>"
editable true | false
setting RECOMMEND | MUST
}
...
}
Each parameter in a view profile corresponds to a measurement in the model. The profile field acts as a wrapper that controls how the measurement value is presented and edited in the model view.
| Field | Required | Description |
|---|---|---|
default
|
yes | The default value for the measurement parameter. Type depends on the underlying measurement type (numeric string for NUMERIC, `'true'` or `'false'` for TRUE/FALSE, etc.). |
editable
|
yes | Whether the user can modify this parameter. `true` allows editing; `false` locks the parameter. |
setting
|
yes | The importance level. `RECOMMEND` marks the parameter as recommended; `MUST` marks it as required. |
View profiles are used when a model supports multiple scenarios based on external factors. For example, a medical device standard model may branch depending on whether the device is sterile or non-sterile:
view_profile DeviceProfile {
parameter sterile {
default "false"
editable true
setting MUST
}
parameter implant {
default "false"
editable true
setting RECOMMEND
}
parameter outsourcing {
default "false"
editable false
setting RECOMMEND
}
}
In this example:
When the
sterile
parameter is set to
’
true
‘
, the model view adjusts to
show only the processes and provisions relevant to sterile devices. When set
to
’
false
‘
, the non-sterile path is shown. This is achieved through
gateway edge conditions that reference the measurement value:
Edge1 {
from SterileGateway
to SterileProcessPath
description "Yes"
condition "[sterile] = 'true'"
}
Edge2 {
from SterileGateway
to NonSterileProcessPath
description "No"
condition "default"
}
View profiles can pre-configure compliance views for specific regulatory contexts:
view_profile EURegulatoryView {
parameter jurisdiction {
default "EU"
editable false
setting MUST
}
parameter riskClass {
default "IIa"
editable true
setting MUST
}
}
View profiles reference existing measurement IDs. The measurement must be defined in the model before it can be used in a view profile parameter. The profile parameter's default value overrides the measurement's initial value when the profile is applied.
When a view profile is active:
View profiles support external factor settings that allow tooling to categorize parameters:
This categorization enables tooling to create guided workflows where users first set required parameters, then optionally adjust recommended parameters, and finally view the parameterized model.
Gateway conditions are measurement-based expressions used on the edges of exclusive gateways in subprocess diagrams. They determine which outgoing path from a gateway is taken based on the current values of measurement variables. This enables parameterized process flows that adapt to measurement data.
In a subprocess
process_flow
section, edges may carry a
condition
attribute:
subprocess <SubprocessID> {
process_flow {
Edge<EdgeNumber> {
from <GatewayID>
to <ProcessID>
description "Branch label"
condition "<condition expression>"
}
}
}
The
condition
attribute contains a measurement expression or the special
value
”
default
“
.
When gateway edges carry measurement-based conditions, the path is selected by evaluating the condition against the current measurement values. Exactly one edge whose condition evaluates to true is followed.
TRUE/FALSE measurements are compared with string literals:
Edge3 {
from DCGateway
to DCEarthGateway
description "Yes"
condition "[dc] = 'true'"
}
This edge is taken when the
dc
measurement (TRUE/FALSE type) has the value
’
true
‘
, indicating the cable is for direct current.
Edge4 {
from ACEarthGateway
to RatedVoltageEarthAC
description "Yes"
condition "[target] = 'true'"
}
This edge is taken when the
target
measurement indicates
conductor-to-conductor mode.
TABLE_REFERENCE measurements return values that can be compared numerically:
Edge8 {
from CableTable6Gateway
to TwoPulleyFlexingTest
description "Yes"
condition "[tableRef] = 6"
}
This edge is taken when the looked-up table reference value equals 6.
Edge9 {
from CableTable6Gateway
to AlternativeTest
description "No"
condition "[tableRef] < 6"
}
Edge2 {
from DimensionCableTypeGateway
to DimensionsForCircularCables
description "Yes"
condition "[isCircular] = 'true'"
}
Edge3 {
from DimensionCableTypeGateway
to DimensionsForFlatCables
description "No"
condition "default"
}
When a gateway has no edge conditions (or only ” default “ conditions), it follows the default gateway behavior: the gateway is fulfilled if at least one of its outgoing paths is fulfilled.
The ” default “ condition marks the fallback path from a gateway:
Edge5 {
from ACEarthGateway
to RatedVoltageConductorAC
description "No"
condition "default"
}
An edge with
condition "default"
is taken when no other edge from the same
gateway has a condition that evaluates to true. Every gateway SHOULD have
exactly one edge with the
”
default
“
condition as a fallback.
The condition expression format in gateway edges follows the same rules as
validate_measurement
expressions:
The BS 6004 model uses gateway conditions to branch between DC and AC test
paths based on the
dc
and
target
measurements:
subprocess Page1 {
process_flow {
Edge3 {
from DCGateway
to DCEarthGateway
description "Yes"
condition "[dc] = 'true'"
}
Edge4 {
from ACEarthGateway
to RatedVoltageEarthAC
description "Yes"
condition "[target] = 'true'"
}
Edge5 {
from ACEarthGateway
to RatedVoltageConductorAC
description "No"
condition "default"
}
Edge6 {
from DCEarthGateway
to RatedVoltageEarthDC
description "Yes"
condition "[target] = 'true'"
}
Edge7 {
from DCEarthGateway
to RatedVoltageConductorDC
description "No"
condition "default"
}
}
}
This creates a two-level branching structure:
subprocess Page17 {
process_flow {
Edge2 {
from DimensionCableTypeGateway
to DimensionsForCircularCables
description "Yes"
condition "[isCircular] = 'true'"
}
Edge3 {
from DimensionCableTypeGateway
to DimensionsForFlatCables
description "No"
condition "default"
}
}
}
The
isCircular
measurement is a TABLE_REFERENCE that returns
’
true
‘
or
’
false
‘
based on the cable type, determining which dimensional path to
follow.
The validation expressions on processes that follow gateway branches test against specific thresholds:
process RatedVoltageEarthAC {
name "Rated Voltage for conductor-earth (ac)"
validate_measurement {
"[OpV] <= 320"
}
}
process RatedVoltageEarthDC {
name "Rated Voltage for conductor-earth (dc)"
validate_measurement {
"[OpV] <= 410"
}
}
The gateway conditions select the appropriate test path, and the
validate_measurement
on each process tests against the correct threshold
for that path.
This clause provides the EBNF grammar for measurement-related constructs in MMEL. The grammar extends the base MMEL grammar defined in MN 113.
MeasurementDecl ::= 'measurement' IDENTIFIER '{' MeasurementField* '}'
MeasurementField ::= 'type' MEASUREMENT_TYPE
| 'definition' STRING
| 'description' STRING
MEASUREMENT_TYPE ::= 'NUMERIC'
| 'DATALIST'
| 'DERIVED'
| 'TRUE/FALSE'
| 'DURATION'
| 'TEXT'
| 'TABLE_REFERENCE'
| 'TABLE_OPTIONS'
| 'DATAITEM'
The
definition
field is required for
DERIVED
,
TABLE_REFERENCE
, and
TABLE_OPTIONS
types. It is optional (and typically absent) for
NUMERIC
,
DATALIST
,
TRUE/FALSE
,
DURATION
, and
TEXT
types.
The
DATAITEM
type is deprecated and superseded by
NUMERIC
.
ValidateMeasurement ::= 'validate_measurement' '{' STRING '}'
The STRING contains a measurement expression following the grammar below.
MeasurementExpr ::= ComparisonExpr
ComparisonExpr ::= ArithExpr CompOp ArithExpr
| ArithExpr '=' STRING_LITERAL
CompOp ::= '>=' | '<=' | '>' | '<'
ArithExpr ::= ArithExpr ('+' | '-') MulDivExpr
| MulDivExpr
MulDivExpr ::= MulDivExpr ('*' | '/') MeasurementRef
| MeasurementRef
MeasurementRef ::= '[' IDENTIFIER ']' ListOp?
ListOp ::= '.' ('max' | 'min' | 'sum' | 'count' | 'average')
STRING_LITERAL ::= "'" ( "true" | "false" | CHAR* ) "'"
The expression grammar supports:
EdgeDecl ::= 'Edge' INTEGER '{'
'from' IDENTIFIER 'to' IDENTIFIER
('description' STRING)?
('condition' EdgeCondition)? '}'
EdgeCondition ::= MeasurementExpr
| '"default"'
Gateway edges may carry measurement expressions or the special ” default “ condition for the fallback path.
TableLookupDef ::= TableID ',' ColumnIndex
(',' ColumnIndex ',' MeasurementID)*
TableID ::= IDENTIFIER
ColumnIndex ::= INTEGER
The table lookup definition is the value of the
definition
field in
TABLE
REFERENCE and TABLE
OPTIONS measurements. It specifies the source
table, target column, and zero or more filter column-measurement pairs.
ViewProfileDecl ::= 'view_profile' IDENTIFIER '{' ProfileParameter* '}'
ProfileParameter ::= 'parameter' IDENTIFIER '{'
'default' STRING
'editable' ('true' | 'false')
'setting' ('RECOMMEND' | 'MUST')
'}'
(* Numeric measurement *)
measurement NumFailLogin {
type NUMERIC
description "Number of failed login attempts"
}
(* DATALIST measurement *)
measurement NumConnection {
type DATALIST
description "Number of connections within 10 seconds (for each user)"
}
(* DERIVED measurement *)
measurement Total_Emission {
type DERIVED
definition "[Included_Emission].sum + [Excluded_Emission].sum"
description "Total emission"
}
(* TRUE/FALSE measurement *)
measurement dc {
type TRUE/FALSE
description "The cable is for d.c."
}
(* TABLE_REFERENCE measurement *)
measurement thicknessReq {
type TABLE_REFERENCE
definition "data,4,0,type,2,area,3,class"
description "Requirement of the radial thickness of insulation"
}
(* TABLE_OPTIONS measurement *)
measurement type {
type TABLE_OPTIONS
definition "data,0,2,area,3,class"
description "Type of cable (e.g., 6181Y)"
}