FSTS 資料轉檔測試紀錄

舊 FSTS COBOL FD 檔 → 新系統 DB 的實測結果紀錄,涵蓋 13 張表的筆數、耗時、人工檢核備註。回到 KM 總覽;轉檔架構背景見 COBOL FD 檔案盤點

一句話

此紀錄是一批 13 張基本/歷史檔從舊 COBOL FD 轉入新系統的實測結果,全部 13/13 成功(共 73,389 筆),但其中 EXRT / FHIO / FSIO 三張在「日期欄位長度」上發現 FD 宣告與實際資料不一致,處理共識是「TMMDD 從長度 4 改為長度 8,資料就看起來正常」。12

一、總表(13 張)

13 張表的轉檔實測全部成功,合計 73,389 筆,耗時約 42 秒。三張表的人工檢核備註指出 FD 宣告 vs. 實際資料的不一致(見下方「格式怪怪的」欄):1

#表名結果筆數成功失敗耗時人工確認備註(日期/文字欄位異常)
1CTRY595901.2sPASS
2CUS22201.3sPASS
3CUST2201.3sPASS
4EXMB868601.4sPASS
5EXRT4,3674,36702.3s⚠️ TMMDD_EXRT 應該是 8 位但 FD 只有 4 位數範例:20251203 AUD EUR 000000000000 000000565600 01141204 082020
6FHIO27527501.5s⚠️ 格式怪怪的先把 TMMDD_FHIO 從 4 改成長度 8,資料看起來比較正常
7FSIO35035001.6s⚠️ 格式怪怪的先把 TMMDD_FHIO 從 4 改成長度 8,資料看起來比較正常(備註重用 FHIO 的描述)
8FSMB47,84347,843019.9sPASS
9FSMB119,92719,92708.4sPASS
10FUMB2201.2sPASS
11UNIT282801.3sPASS
12UPMB28028001.5sPASS
13UPPM16816801.2sPASS

二、FHIO 實測細節

轉檔紀錄.md §FHIO 段落收錄了實際 FHIO 原始資料一筆、人工判讀結論、以及完整的 FHIOF.CPY FD 宣告(含欄位註解)。2

2.1 原始資料範例

2026020301150203966390001000141720BTUSNASDNVDA   USD0000000500000190000000BLDN000000000950000000000010000000000000100000USA    020J089591403010115020401150204YY   0000001000000USD  01150204

對應 FHIO-REC 的 512 bytes 固定長度欄位拆解。2

2.2 人工判讀結論(重點)

「TMMDD 改成長度 8」:原本 TMMDD-FHIO PIC 9(04) 只容納 4 位數,但實測資料前 8 個字元是 20260203(YYYYMMDD 完整年月日),因此將 TMMDDPIC 9(04) 改為 PIC 9(08) 後,資料對位才對齊。2

2.3 FD 宣告摘要(512 bytes)

FHIOF.CPYFHIO-REC 主要欄位(raw 收錄完整宣告):2

  • TMMDD-FHIO — 成交日(實測需 PIC 9(08),而非 FD 原本的 PIC 9(04))
  • ODATE-FHIO — 委託日期(PIC 9(08) = YY/MM/DD)
  • BHNO-FHIO — 下單分公司代號(PIC X(04))
  • SHEET-FHIO — 櫃號 + 序號(REDEFINES 為 TERM + DSEQ
  • DNO-FHIO — 分單號碼(PIC 9(02))
  • CSEQ-FHIO — 客戶帳號(PIC 9(06))
  • TTYPE-FHIO — 交易方式(0:現股 1:融資 2:融券初期一律現股
  • UPNO-FHIO / EXNO-FHIO — 上手代號 / 交易所別
  • STOCK-FHIO — 股票代號(PIC X(12))
  • UNIT-FHIO — 幣別、QTY / PRICE — 成交數量 / 單價
  • BS-FHIO — 買賣別(B/S 條件)
  • TYPE-FHIO — 下單方式(REDEFINES 為 TYPE1/TYPE2/TYPE3)
  • AMT / NAMT / LAMT — 成交價金 / 淨收付 / 圈存金額
  • COUNTRY, EMNO, TSALE, TLNO, TTIME — 國別、介紹員工、營業員、櫃員、成交時間
  • PCDATE / PSDATE — 保證金 / 股票交割日期
  • PCFLAG / PSFLAG — 保證金 / 股票入帳註記
  • EXECID — FIX EXECID
  • TKIND — 來源註記
  • EXRATE, PUNIT, BET — 匯率、交割幣別、折扣點數
  • DCCTRY, SSI, CSALE — 投信國別、SSI 類別(0:一般 1:特殊 2:金資代碼...)、共耕營業員
  • FEE-FHIO OCCURS 12 TIMES — 12 種手續費(手續費 / 處理費 / 交易所費 / 結算費 / 匯款手續費 / 交易稅 / 印花稅 / PTP 交易稅 / 4 個保留)
  • UPFEE-FHIO OCCURS 12 TIMES — 上手側的 12 種費用(手續費 / 處理費 / 交易所費 / 結算費 / 匯款手續費 / 交易稅 / 印花稅 / 股票服務費 / 營業稅 / 保管費 / 營業成本 / 交割費用)
  • FHIO-KEYRENAMES TMMDD THRU DNO(複合 key)2

三、對照 UPPM 費用代碼

FEE-FHIO 的 12 個 OCCURS 欄位與 UPFEE-FHIO 的 12 個對應大致符合 UPPM 費用類型 14 類,但兩邊順序略有不同,且 FEE-FHIO 把索引 8 放給了 PTP 交易稅(UPPM §參數則為「股票服務費」)。2

[推論] 這代表 FD 宣告的 FEE OCCURS 不是 UPPM 的子集或對應 key-value,而是 FHIO 自己定義的 12 欄位順序;若新系統要整合到 UPPM 統一費用模型,需要 mapping 表,不能直接 1:1。2

四、對新系統的啟示

[推論] 三點從本紀錄延伸的啟示:12

  1. 靜態 FD 宣告與實際資料可能不一致TMMDD 被宣告為 4 bytes 但實際為 8 bytes,代表舊 COBOL FD 可能已過時或從未完整更新;新系統的 INI Layout 需要以實際資料為準再對位。
  2. 「成功但格式怪」不可直接視為 PASS:即使轉檔程式 0 失敗,仍需人工抽樣驗證日期 / 文字欄位;本紀錄的人工檢核流程應作為新系統轉檔的 SOP。
  3. OCCURS 費用欄位需要對照表FEE / UPFEE 的 12 欄位語意與 UPPM 不完全一致,整合到新系統統一費用模型前需先建立 mapping。

相關頁面

補充資訊

(未來 ingest 新來源會在此追加段落)


參考資料

Footnotes

  1. 轉檔紀錄 §總表 — 13 張表轉檔結果 2 3

  2. 轉檔紀錄 §FHIO — 原始資料 + FD 宣告 + TMMDD 長度修正 2 3 4 5 6 7 8 9