

AWS Mainframe Modernization Service （受管執行期環境體驗） 不再開放給新客戶使用。對於與 AWS Mainframe Modernization Service （受管執行期環境體驗） 類似的功能，探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS 大型主機現代化可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 適用於大型主機使用者 AWS 轉換的資料結構
<a name="ba-endpoints-apx"></a>

您可以在下一節中了解適用於大型主機引擎的 AWS Transform 的各種資料結構。

**Topics**
+ [任務執行詳細資訊訊息結構](#job-execution-details)
+ [交易啟動結果結構](#transaction-outcome)
+ [交易啟動記錄結果結構](#transaction-record-outcome)
+ [佇列上任務的可能狀態](#jobs-status)
+ [提交任務並排程任務輸入](#submit-job)
+ [排程任務回應的清單](#list-scheduled-jobs)
+ [重複任務回應的清單](#list-on-hold-jobs)

## 任務執行詳細資訊訊息結構
<a name="job-execution-details"></a>

每個任務執行詳細資訊都會有下列欄位：

scriptId  
呼叫指令碼的識別符。

呼叫者  
發起人的 I.P. 地址。

identifier  
唯一的任務執行識別符。

startTime  
任務執行開始的日期和時間。

endTime  
任務執行結束的日期和時間。

status  
任務執行的狀態。一個可能的數值：  
+ `DONE`：任務執行正常結束。
+ `TRIGGERED`：任務執行已觸發，但尚未啟動。
+ `RUNNING`：任務執行正在執行。
+ `KILLED`：任務執行已終止。
+ `FAILED`：任務執行失敗。

executionResult  
摘要任務執行結果的訊息。如果任務執行尚未完成，此訊息可以是簡單的訊息，也可以是具有下列欄位的 JSON 結構：  
+ exitCode：數字結束碼；負值表示失敗情況。
+ 程式：任務啟動的最新程式。
+ 狀態：一個可能的數值：
  + `Error`：當 exitCode = -1 時；這對應於任務執行期間發生的 （技術） 錯誤。
  + `Failed`：當 exitcode = -2；這對應於服務程式執行期間發生的失敗 （例如 ABEND 情況）。
  + `Succeeded`：當 exitCode >= 0 時；
+ stepName：任務中執行的最新步驟名稱。

executionMode  
SYNCHRONOUS 或 ASYNCHRONOUS，取決於任務的啟動方式。

輸出範例：

```
{
    "scriptId": "INTCALC",
    "caller": "127.0.0.1",
    "identifier": "97d410be-efa7-4bd3-b7b9-d080e5769771",
    "startTime": "06-09-2023 11:42:41",
    "endTime": "06-09-2023 11:42:42",
    "status": "DONE",
    "executionResult": "{ \"exitCode\": -1, \"stepName\": \"STEP15\", \"program\": \"CBACT04C\", \"status\": \"Error\" }",
    "executionMode": "ASYNCHRONOUS"
  }
```

## 交易啟動結果結構
<a name="transaction-outcome"></a>

 結構可能包含下列欄位：

outCome  
代表交易執行結果的字串。可能值為：  
+ `Success`：交易執行正確結束。
+ `Failure`：交易執行無法正常結束 （遇到一些問題）。

逗號  
代表 COMMAREA 最終值的字串，以位元組 64 編碼的位元組陣列表示。可能是空字串。

containerRecord  
（選用） 字串，以位元組 64 編碼位元組陣列表示 CONTAINER 的記錄內容。

serverDescription  
可能包含提供請求之伺服器的相關資訊 （用於除錯目的）。可能是空字串。

abendCode  
（選用） 如果所啟動交易參考的程式已中止，則抽象程式碼值會傳回為此欄位中的字串。

回應範例：

成功

```
{
    "outCome": "Success",
    "commarea": "",
    "serverDescription": ""
  }
```

失敗

```
{
    "outCome": "Failure",
    "commarea": "",
    "serverDescription": "",
    "abendCode": "AEIA"
  }
```

## 交易啟動記錄結果結構
<a name="transaction-record-outcome"></a>

結構可能包含下列欄位：

recordContent  
字串，以位元組 64 編碼位元組陣列表示 COMMAREA 的記錄內容。

containerRecord  
字串，以位元組 64 編碼的位元組陣列表示 CONTAINER 的記錄內容。

serverDescription  
可能包含提供請求之伺服器的相關資訊 （用於除錯目的）。可能是空字串。

回應範例：

成功

```
{
    "recordContent": "",
    "serverDescription": ""
}
```

## 佇列上任務的可能狀態
<a name="jobs-status"></a>

在佇列上，任務可以具有下列狀態：

ACTIVE  
任務目前正在佇列上執行。

EXECUTION\$1WAIT  
任務正在等待執行緒可用。

已排程  
任務排程在特定日期和時間執行。

HOLD  
在執行之前，任務正在等待釋放。

COMPLETED (已完成)  
任務已成功執行。

失敗  
任務執行失敗。

UNKNOWN (不明)  
狀態未知。

## 提交任務並排程任務輸入
<a name="submit-job"></a>

提交任務和排程任務輸入是`com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage`物件的 JSON 序列化。下面的範例輸入顯示此類 Bean 的所有欄位。

提交任務的範例輸入：

```
{
    "messageQueueName":null,
    "scheduleDate":null,
    "scheduleTime":null,
    "programName":"PTA0044",
    "programParams":
     {"wmind":"B"},
    "localDataAreaValue":"",
    "userName":"USER1",
    "jobName":"PTA0044",
    "jobNumber":9,
    "jobPriority":5,
    "executionDate":"20181231",
    "jobQueue":"queue1",
    "jobOnHold":false
}
```

排程任務的範例輸入：

```
{
     "scheduleCron": "*/2 * * * * ?",
     "programName":"LOGPGM",
     "programParams": {
         "cl_sbmjob_param_json": "[\"./output/schedule-job-log.txt\", \"Every 2 seconds!\"]"
     },
     "localDataAreaValue":"",
     "userName":"PVO",
     "jobName":"LOGGERJOB",
     "jobPriority":5,
     "jobQueue":"queue1",
     "scheduleMisfirePolicy": 4,
     "startTime": "2003/05/04 07:00:00.000 GMT-06:00",
     "endTime": "2003/05/04 07:00:07.000 GMT-06:00"
 }
```

jobNumber  
如果任務編號為 0，任務編號將使用任務編號序列中的下一個編號自動產生。該值應該設定為 0 （測試用途除外）。

jobPriority  
AS400 中的預設任務優先順序為 5。有效範圍為 0-9，0 是最高優先順序。

jobOnHold  
如果任務在保留期間提交，則不會立即執行，只會在有人「發行」它時執行。您可以使用 REST API (/release 或 /release-all) 來釋放任務。

scheduleDate 和 scheduleTime  
如果這些值不是 null，任務將在指定的日期和時間執行。

Date  
可以用 MMddyy 或 ddMMyyyy 格式提供 （輸入的大小將決定使用的格式）

時間  
可以提供格式 HHmm 或 HHmmss （輸入的大小將決定使用的格式）

programParams  
將做為映射傳遞至程式。

scheduleMisfirePolicy  
定義錯誤觸發時所使用的策略。以下為可能值：  

1. 釋放第一個不發射並捨棄另一個不發射。

1. 針對第一次不發射提交保留的任務，並捨棄其他不發射。

1. 捨棄不起火。

1. 釋出所有不發射。任務佇列將執行所有任務。

## 排程任務回應的清單
<a name="list-scheduled-jobs"></a>

 這是 list-jobs 任務佇列端點的結構。用於提交該任務的提交任務訊息是回應的一部分。這可用於追蹤或測試/重新提交目的。任務完成時，也會填入開始日期和結束日期。

```
[
  {
    "jobName": "PTA0044",
    "userName": "USER1",
    "jobNumber": 9,
    "jobPriority": 5,
    "status": "HOLD",
    "jobDelay": 0,
    "startDate": null,
    "endDate": null,
    "jobQueue": "queue1",
    "message": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "programName": "PTA0044",
      "programParams": {"wmind": "B"},
      "localDataAreaValue": "",
      "userName": "USER1",
      "jobName": "PTA0044",
      "jobNumber": 9,
      "jobPriority": 5,
      "executionDate": "20181231",
      "jobQueue": "queue1",
      "jobOnHold": true,
      "scheduleCron": null,
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "executionId": 1,
    "jobScheduledId": 0,
    "jobScheduledAt": null
  },
  {
    "jobName": "PTA0044",
    "userName": "USER1",
    "jobNumber": 9,
    "jobPriority": 5,
    "status": "COMPLETED",
    "jobDelay": 0,
    "startDate": "2022-10-13T22:48:34.025+00:00",
    "endDate": "2022-10-13T22:52:54.475+00:00",
    "jobQueue": "queue1",
    "message": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "programName": "PTA0044",
      "programParams": {"wmind": "B"},
      "localDataAreaValue": "",
      "userName": "USER1",
      "jobName": "PTA0044",
      "jobNumber": 9,
      "jobPriority": 5,
      "executionDate": "20181231",
      "jobQueue": "queue1",
      "jobOnHold": true,
      "scheduleCron": "*/20 * * * * ?",
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "executionId": 2,
    "jobScheduledId": 0,
    "jobScheduledAt": null
  }
]
```

## 重複任務回應的清單
<a name="list-on-hold-jobs"></a>

這是 /schedule/list 任務佇列端點的結構。

```
[
  {
    "id": 1,
    "status": "ACTIVE",
    "jobNumber": 1,
    "userName": "PVO",
    "msg": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "startTime": "2024/03/07 21:12:00.000 UTC",
      "endTime": "2024/03/07 21:13:59.000 UTC",
      "programName": "LOGPGM",
      "programParams": {"cl_sbmjob_param_json": "[\"./output/schedule-job-log.txt\", \"Every 20 seconds!\"]"},
      "localDataAreaValue": "",
      "userName": "PVO",
      "jobName": "LOGGERJOB",
      "jobNumber": 1,
      "jobScheduleId": 1,
      "jobPriority": 5,
      "executionDate": null,
      "jobQueue": "queue1",
      "jobOnHold": false,
      "scheduleCron": "*/20 * * * * ?",
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "lastUpdatedAt": "2024-03-07T21:11:13.282+00:00",
    "lastUpdatedBy": ""
  }
]
```