$ZL[EVEL] は、Mが起動するスタックの中で、DOコマンド、XECUTEコマンド、外部関数によって引き起こされる"ネスティングレベル"を示している整数値を含みます。
$ZLEVELは初期値 ゼロ(0)を持ち、そして、DO、XECUTE、または外部関数などで1つずつ増える値を持ちます。1つのFORループを終了しないいくつかQUITは、$ZLEVELをデクリメントします。ZGOTOはまた$ZLEVELを減らすことができます。M標準規格に従って、FORコマンドは$ZLEVELを増加しません。Mルーチンは、SETやNEWコマンドで$ZLEVELを変更することはできません。
ZGOTOの引数で後で使用するレベルを捕獲するために、デバッグやエラー処理のメカニズムで$ZLEVELを使用してください。
例:
GTM>zprint ^zleve zleve; do B write X,! quit B goto C quit C do D quit D set X=$ZLEVEL quit GTM>do ^zleve 4 GTM>
ダイレクトモードから実行されるこのプログラムは、$ZLEVELを4の値を生成します。もしシェルからこのプログラムを実行するならば、$ZLEVELの値は3(3)です。