# setsync

同期モードを設定する。

    setsync <sync flag>

## 解説

<sync flag> が0以外ならば同期通信モードに入る。
<sync flag> が0ならば非同期通信モードに入る。

Tera Term はホストから受信した文字を MACRO へ転送する。
MACRO はそれらの文字をバッファに保存し、受信文字を処理するコマンド("wait" コマンド等)がバッファから文字を取り出す。

MACRO は初期状態が「非同期モード」である。このモードでは、受信文字を処理するコマンドが長い間実行されない場合、または受信速度が速すぎる場合はバッファがあふれる可能性がある。
同期モードでは、バッファは決してあふれない。バッファがいっぱいになった場合、Tera Term はホストからの文字受信と MACRO への文字転送を停止する。バッファに再び空きができると Tera Term は文字受信と転送を再開する。
必要な時に限り同期モードに入り、必要でなくなったら非同期モードに戻るようにした方が良い。

複数行にわたる受信した文字を、一文字も失うことなく処理する、というような信頼性が要求されるマクロ処理の場合、同期モードに入る必要がある。
しかし、同期モードでは Tera Term の文字受信速度が遅くなり、また受信文字を処理するコマンドが長い間実行されない場合は、Tera Term の文字受信が停止したままになってしまう。
一方、単純なマクロ処理(例えば自動ログイン)ならば非同期モードでもほとんど問題なく動作する。この場合、バッファサイズは十分大きく(16Kバイト)、受信したすべての文字はバッファがあふれる前にコマンドによって処理される。

## 例

    connect server
    ; 同期モードに入る
    setsync 1
    timeout = 60
    waitln '+OK' '-ERR'

    ; 非同期モードに入る
    setsync 0

    end

    connect '/C=1'

    setsync 1

    while 1
      ; Request data
      sendln  'REQ'

      ; Delay for 1 second
      pause 1

      flushrecv
    endwhile

## 参照

- flushrecv