見出し画像

【TTL】はじめてのTTLマクロ 3 TTLマクロでサブルーチンを使用

はじめに

サーブルーチンを自作関数のように使用します。再帰的な利用があるわけではないですが、処理の流れやコード内の処理のブロックをわかりやすくするため、サブルーチンを使用しました。

サブルーチンはcallでラベル名を指定して呼び出し、returnで戻ってきます。
returnの後はcall [ラベル名]の次の行から処理が始まるのでendを入れておかないとサブルーチンの処理が再実行されてしまうので注意が必要です。

call [ラベル名]

end  ;マクロ終了

:[ラベル名]
  ここにサブルーチンの処理を書く
return

logget.ttl

下記のようにコードを修正しました。
文字が小さいとわかりにくいですが、コロン(:)はラベル、セミコロン(;)はコメントアウトです。

;------------------------------------------------------------------------------
;メインルーチン
;------------------------------------------------------------------------------
:mainRoutin
  call funcGetConnectText
  call funcConnectDevice
  call funcLogin
  call funcMakeLogFile
  call funcExecCommands

  sendln "exit"

:labelClose
  end				; マクロ終了


;------------------------------------------------------------------------------
;connectするための文字列を作成するサブルーチン
;------------------------------------------------------------------------------
:funcGetConnectText
  strTemp = '192.168.11.111:22 /ssh /2 /nosecuritywarning /auth=password /user=ruser /passwd=rpass'
return

;------------------------------------------------------------------------------
;connectするサブルーチン
;------------------------------------------------------------------------------
:funcConnectDevice

  ;リンク状態を必要に応じてリセットしてから接続
  testlink
  if result <> 0 closett
  connect strTemp

return

;------------------------------------------------------------------------------
;機器にログインするサブルーチン
;------------------------------------------------------------------------------
:funcLogin

  wait ">"
  flushrecv
  sendln "enable"

  wait "Password:"
  flushrecv
  sendln "epass"
  
return

;----------------------------------------------------------------------------
;ログファイルを作成するサブルーチン
;----------------------------------------------------------------------------
:funcMakeLogFile
  logopen 'C:\work\logget\teraterm.log' 1 1
return


;----------------------------------------------------------------------------
;コマンドの実行をするサブルーチン
;----------------------------------------------------------------------------
:funcExecCommands
  ;ログ取得前の処理
  flushrecv
  sendln 'terminal length 0'
  wait '#'

  flushrecv
  sendln 'terminal width 0'
  wait '#'

  flushrecv
  sendln 'terminal no monitor'
  wait '#'

  ;ログ取得前の処理
  flushrecv
  sendln "show ver"

return

前の記事

この記事が気に入ったらサポートをしてみませんか?