クローズ処理を忘れるな

オープン・クローズが必要な処理

  • ファイル処理
  • 通信処理
  • DB処理
対になる命令
FileOpen FileClose ファイルのオープン
SktUDPCreate SktClose UDPソケットのクリエイト
SktTCPAccept SktClose TCP(Server)のアクセプト
SktTCPConnect SktClose TCP(Client)のコネクト
CIPOpen CIPClose CIP(Class3)コネクション
DB_Connect DB_Close データベース接続

クローズ処理で気を付けなければいけないところ

オープン(Connectなどを含め)したら必ずクローズしなければいけません
正常処理時にクローズ処理をするのはもちろんのこと、様々な異常時にも必ずクローズ処理をする必要があるのですが、想定外の異常を見逃さないように注意します
また、処理完了のタイミングはクローズの指示で終了ではなくて、クローズの完了が処理完了として次の処理はクローズ完了後に実行するようにします
Close

プログラム例

ファイル操作
ファイル操作のうちOPEN→任意の処理→Closeの手順が必要な命令は以下の種類があります
  • FileSeek
  • FileRead
  • FileWrite
  • FileGets
  • FilePuts

  • 下図はOpen→Write→Closeの例です
    ファイル操作
    ポイント
    FileWrite.ErrorでもFileCloseします
    NormalEnd(正常終了)を作ってClose完了を待ってから全ての処理を終了とします

    Ethernetソケット通信
    ソケット通信はUDPではSktUDPCreate,TCPサーバではSktTCPAccept,TCPクライアントではSktTCPConnectで始まり→任意の処理→SktCloseの手順になります
    任意の処理には以下の種類の命令があります
  • SktUDPRcv
  • SktUDPSend
  • SktTCPRcv
  • SktTCPSend
  • SktTCPStatus
  • SktClearBuf
  • SktSetOption
  • ModbusTCPCmd
  • ModbusTCPRead
  • ModbusTCPWrite

  • 下図はSktTCPConnect→SktTCPSend→SktTCPRcv→Closeの例です
    ソケット操作
    ポイント
    SktTcpSend.ErrorとSktTcpRcv.ErrorでもSktCloseします
    NormalEnd(正常終了)を作ってClose完了を待ってから全ての処理を終了とします

    データベース
    データベースはDB_Connectで始まり→任意の処理→DB_Closeの手順になります
    任意の処理には以下の種類の命令があります
  • DB_CreateMapping
  • DB_Insert
  • DB_Update
  • DB_Select
  • DB_Delete
  • DB_ControlSpool
  • DB_BatchInsert
  • DB_AttachProcedure
  • DB_ExecuteProcedure
  • DB_DetachProcedure

  • 下図はDB_Connect→DB_CreateMapping→DB_Insert→DB_Closeの例です
    DB操作
    ポイント
    DB_CreateMapping.ErrorとDB_Insert.ErrorでもSktCloseします
    NormalEnd(正常終了)を作ってClose完了を待ってから全ての処理を終了とします

    プログラム例は最低限の処理のみ書いているため説明以外の異常処理は考慮していません