Context:
Procedure Division Statements
![]() |
For JVM COBOL, the USING phrase is only applicable to JVM version 1.7 and onwards.
The type-specifier section of the PERFORM..USING phrase must specify a type that implements the System.IDisposable interface (.NET) or the java.lang.AutoCloseable interface (JVM version 1.7), and must specify an initial value via the = expression syntax.
A variable can be declared at the point of use in an iterator, and its scope is until the end of the perform block.
*> In this case, the scope of i is until the end of the perform block.
perform varying i as binary-long from 1 by 1 until i > 10
display i
end-perform
*> So the i in the following perform block is a new instance of i,
*> independent of the i in the preceding perform block.
perform varying i as binary-short from 0 by 1 until i > 10
display i
end-perform
Here, k is declared inline to iterate through a dictionary. Again, it is in scope until the corresponding end-perform.
01 dict1 dictionary[string string].
create dict1
write dict1 from "Anthony" key "A"
write dict1 from "Brian" key "B"
write dict1 from "Charles" key "C"
perform varying key k as string value val as string through dict1
display k ":" val
end-perform
perform varying value val as string through dict1
display val
end-perform
perform varying key k as string through dict1
display k
end-perform
See also the Local Variables sample, available from Start > All Programs > Micro Focus Enterprise Developer > Samples > Visual COBOL Samples, under COBOL for JVM.