The macro definition is as follows:
.macro X_COUNT ARG
COUNT = 0
.irpc CH,<ARG>
.iif identical,<CH>,<X>, COUNT = COUNT + 1
.endr
.endm X_COUNT
The macro call and expansion of the macro defined previously is
as follows:
X_COUNT XXFOOXBARXX
COUNT = 0
.irpc CH,<XXFOOXBARXX>
.iif identical,<CH>,<X>, COUNT = COUNT + 1
.endr
.iif identical,<X>,<X>, COUNT = COUNT + 1
.iif identical,<X>,<X>, COUNT = COUNT + 1
.iif identical,<F>,<X>, COUNT = COUNT + 1
.iif identical,<O>,<X>, COUNT = COUNT + 1
.iif identical,<O>,<X>, COUNT = COUNT + 1
.iif identical,<X>,<X>, COUNT = COUNT + 1
.iif identical,<B>,<X>, COUNT = COUNT + 1
.iif identical,<A>,<X>, COUNT = COUNT + 1
.iif identical,<R>,<X>, COUNT = COUNT + 1
.iif identical,<X>,<X>, COUNT = COUNT + 1
.iif identical,<X>,<X>, COUNT = COUNT + 1
.print "%integer(COUNT)"
%MACRO64-I-GENPRINT, Generated PRINT: 5
This example uses the .IRPC directive to iterate over the
characters in the argument to the X_COUNT macro. Each time
an argument character is X, the variable COUNT is incremented.
After the X_COUNT macro has expanded, the example uses the
%INTEGER() lexical operator to display the value of COUNT.