You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

COBOL语句转JSON问题:第三个示例语句输出不符预期求修正

修正COBOL MODIFY MAP游标信息提取的Python代码

针对你提到的「MODIFY MAP FOR FIELD NBS-DS-01」语句输出不符合预期的问题,大概率是原有代码的正则匹配逻辑没覆盖这种不带CURSOR关键字的场景,或者字段名的匹配规则不支持带连字符的标识符。以下是修正后的实现:

示例修正代码

import re
import json

def parse_modify_map(cobol_line):
    # 匹配MODIFY MAP语句,兼容带/不带CURSOR的情况,支持带连字符的字段名
    regex = re.compile(
        r"MODIFY MAP(?:\s+CURSOR)?\s+FOR FIELD\s+([A-Z0-9-]+)",
        re.IGNORECASE
    )
    match_result = regex.search(cobol_line)
    
    if match_result:
        field_id = match_result.group(1).strip()
        # 这里按常见的期望格式生成JSON,可根据你的需求调整字段
        return json.dumps({
            "operation": "MODIFY_MAP",
            "target_field": field_id,
            "cursor_action": "SET_TO_FIELD"
        }, indent=2)
    else:
        return json.dumps({"status": "error", "message": "Unrecognized MODIFY MAP statement"}, indent=2)

# 测试目标语句
sample_stmt = "MODIFY MAP FOR FIELD NBS-DS-01"
print(parse_modify_map(sample_stmt))

输出结果(符合预期的格式示例)

{
  "operation": "MODIFY_MAP",
  "target_field": "NBS-DS-01",
  "cursor_action": "SET_TO_FIELD"
}

关键修正点

  • 正则表达式加入(?:\s+CURSOR)?可选分组,兼容MODIFY MAP CURSOR FOR FIELD...和MODIFY MAP FOR FIELD...两种写法
  • 字段名匹配规则[A-Z0-9-]+支持带连字符的COBOL字段标识符
  • 输出JSON结构可根据你的实际需求调整字段名称和值

如果你的期望JSON格式不同,或者原有代码有其他特殊逻辑(比如处理多个字段、游标位置参数等),可以贴出原有代码和期望的输出格式,再做针对性调整。

内容的提问来源于stack exchange,提问作者Beula Angeline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:15:01