1

「csvファイル→変数値」や「繰り返し終了」でバグを疑う挙動に遭遇しました。
どうやらわたしが「csvファイル→変数値」の仕様を誤認していたようです、、
わたしみたいな横着派がハマるポイントだと思うので、お裾分けです。
長いです。
「常識でしょ」と思われたら、それ以降はあまり読む価値がない情報です。

 

症状

  • 「csvファイル→変数値」で変数が初期化されないことがある

 

検証で特定した仕様

  • 「csvファイル→変数値」で使うデータ一覧形式のCSVファイルは、1行目がブランクになる手前の列までをデータ範囲として認識する

 

症状で困った経緯

  • 「csvファイル→変数値」を変数の一括初期化目的で使っている
  • CSVファイルは変数一覧画面からエクスポートするのがラク
  • 変数が増えると、CSVファイルにも追加が必要
  • システムのアカウントやファイル/フォルダパス等の初期化しないグループは、Excelで開いて5行目とかに避けていた
  • 避ける変数は、変数一覧画面で最下部にまとめてない
  • たとえば100個の変数のうち、H:N、V:Zを5行目に避けていた
  • すると、、「csvファイル→変数値」で初期化されるのはG列の変数まで、、
  • H列以降は永遠に初期化されないこととなる

 

気づくのが遅れた背景

  • 避ける列を変数一覧でグループごと最下部にして、エクスポートしたCSVがExcel上で右にまとまるようにしていたこともあった
  • シナリオのループサイクルで、何サイクルでも正常に処理できていた、、途中でスキップフラグが立つまでは、、
  • 正常に処理できていたのは、次のサイクルで変数が正常に上書かれていたから
  • ひと度スキップフラグが立つと、次のサイクル以降、正常に処理できる案件もひたすらスキップされ続ける、、

 

テスト01

データ一覧形式の「変数01.csv」

変数A,変数B,変数C
aaaaa,bbbbb,ccccc

シナリオ

繰り返し
 csvファイル→変数値:変数01.csv、1
 待機ボックス①
 変数値設定:変数A、AAAAA
 変数値設定:変数B、BBBBB
 変数値設定:変数C、CCCCC
 待機ボックス②

実行結果

  • 待機ボックス①で変数値にそれぞれ小文字がセットされる
  • 待機ボックス②で変数値がそれぞれ大文字になる
  • 以降、待機ボックス①で小文字にリセットされる(想定通り)

 

テスト02

データ一覧形式の「変数02.csv」
B1:B2をB5:B6に移動(B1:B2はブランク)

変数A,,変数C
aaaaa,,ccccc
,,
,,
,変数B,
,bbbbb,

実行結果

  • 待機ボックス①で変数Aだけに小文字がセットされた!(想定外!)
  • 待機ボックス②で変数値がそれぞれ大文字になる
  • 以降、待機ボックス①で変数Aだけが小文字にリセットされる(想定外!)

 

仕様を特定してずっと正常に処理できるようになった現在の思い

  • よーく考えればそんな仕様と想像できても良さそう
  • 常識の範囲と言われればそれまで、、
  • ないデータの分まで場所を取ってたら、メモリの効率が悪いだろうし
  • Ver.6系までの経験で、1行目の変数名がありさえすれば良いと思い込んでいた
  • Ver.6系で列を飛ばして読み込まれていたかどうかまでは、まだ特定していない
  • 改めてVer.7系のマニュアルを読み返したものの、「データ一覧形式」の定義に関する記述は見つけられず、

ユーザライブラリサンプル説明書

csvファイル→変数値
データ一覧形式のファイルを読み込んで変数に反映します。

WinActor操作マニュアル内の「データ一覧形式」に相当する表現

表形式データ
雛形ファイル
ループ実行で扱えるデータ形式
雛形ファイルの1行目には変数名、2行目には変数の初期値が出力されます
データ一覧用のファイル
読み込み可能なデータ形式
読み込み可能なデータファイルは、Excel形式またはCSV形式
データ一覧のデータ
Excelファイルを使った初期化(表形式)
データ一覧を使った変数の初期化

  • ※ どうやらVer.7系では、ユーザライブラリサンプル説明書の「データ一覧形式」相当は、WinActor操作マニュアルで「表形式」と表記されている模様

簡易マニュアル内の関連箇所

データ一覧でExcelやCSVを読み込むと、ExcelやCSVファイルの1行目の項目名が変数名と対応づけられます。

公式のFAQで「データ一覧」を検索しても定義らしき記述見当たらず

http://www.matchcontact.net/winactor_jp/

マニュアルには載ってなさそうな仕様に関する代理店さんのFAQ

データ一覧で扱えるデータの上限を教えてください。 – WinActorに関するよくあるお問い合わせ
https://winactor.jp/faq/?p=719

  • 途中に空列を含める、わたしのような使いかたがNGいう考えに至る情報ではない、、
  • 「csvファイル→変数値」でも、256個の変数分しか初期化できないかも、、

繰り返し
 待機ボックス
 csvファイル→変数値:変数a.csv、300変数、数字のみ
 待機ボックス
 csvファイル→変数値:変数1.csv、300変数、半角英字のみ
 待機ボックス

  • ひとまず300変数は初期化できた
  • 「csvファイル→変数値」のCSVには256の上限は該当しないということか
  • もしくは、代理店さんのFAQはVer.6までの情報なのかも

https://winactor.biz/docs/WinActor_v6_v7_releasenote.pdf#page=26

 

 

(以下、当初予定していた質問内容)

CSVとかでまとめての抽出が叶わない複数のWebシステムです。
データを抽出してCSVに溜め込むシナリオで、思わぬ挙動に苦戦中です。
助けてください。

メッセージAAAが表示されたサイクル以降で、AAAのサイクルの変数の値を引きずっちゃいます、、
鋭意デバッグ中ですが、AAAが表示された場合に★を辿って■に進んじゃいます、、
▲の「サブルーチン終了」が機能してないようです、、

ケアレスミスだとは思うんですが、、

Win10
WinActor630/7211で同じ挙動

 

シナリオ抜粋

繰り返し
 csvファイル→変数値:8割の変数を初期化
 サブルーチンX
 分岐:スキップフラグ 等しくない スキップ
  True
   サブルーチンY
  Fasle
   何も置かない
 取得した変数値をCSVファイルに1行追加
 ログ出力:処理結果やスキップ理由

サブルーチンX
 例外処理
  正常系
   値の取得:メッセージ★
  異常系
   何も置かない
 分岐:メッセージ 等しい AAA
  True
   変数値設定:スキップフラグ、スキップ
   変数値設定:処理メモ、AAA★
   検索画面に戻るサブルーチン★
   サブルーチン終了▲
  False
   何も置かない
 待機ボックス(仮置き)■
 以下、値の一括取得が続く■

※ 実際にはサブルーチンはもっと複雑に入り組んでいる

 

ログ出力の状況

  • スキップのサイクルでは、スキップフラグとスキップ理由もログに残る
  • 次のサイクル以降では、有無を言わさずスキップフラグと、前回スキップした理由が残る

 

新しいシナリオファイルのサンプルで検証

変数値設定
繰り返し
 csvファイル→変数値①
 サブルーチンA呼び出し②

サブルーチンA
 変数値設定③
 分岐④
  True
   待機ボックス⑤
   サブルーチンB呼び出し⑥
   サブルーチン終了⑧
  False
   待機ボックス
 待機ボックス
 変数値設定

サブルーチンB
 待機ボックス⑦

  • ①~⑧がループする
  • サブルーチン終了は正常に機能してるみたい
anothersolution 質問の投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。