{"id":47018,"date":"2023-03-16T12:05:54","date_gmt":"2023-09-03T17:56:46","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/"},"modified":"2024-04-29T19:08:06","modified_gmt":"2024-04-29T11:08:06","slug":"%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/","title":{"rendered":"\u5728z\/OS\u4e0a\u7684VSAM\u7684\u590d\u5236 &#8211; (4) \u6dfb\u52a0VSAM\u6587\u4ef6\uff08\u4e0eKafka\u534f\u540c\u5de5\u4f5c\uff09\/ \u590d\u5236\u7684\u6d4b\u8bd5"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u5df2\u7ecf\u8ba8\u8bba\u4e86\u5c06z\/OS\u4e0a\u7684VSAM\u6587\u4ef6\u590d\u5236\u5230Db2\u548cKafka\u7684\u914d\u7f6e\u6d41\u7a0b\u3002\u7531\u4e8e\u6211\u4eec\u540c\u65f6\u8fdb\u884c\u4e86\u57fa\u7840\u8bbe\u65bd\u8bbe\u7f6e\u548c\u6bcf\u4e2aVSAM\u6587\u4ef6\u7684\u590d\u5236\u8bbe\u7f6e\uff0c\u64cd\u4f5c\u53ef\u80fd\u6709\u4e9b\u96be\u4ee5\u7406\u89e3\u3002<br \/>\n\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u5c06\u5148\u5b8c\u6210\u4e00\u7cfb\u5217\u914d\u7f6e\u540e\uff0c\u5728VSAM\u6587\u4ef6\u589e\u52a0\u590d\u5236\u65f6\uff0c\u8ffd\u52a0\u76f8\u5e94\u7684\u6b65\u9aa4\u3002\u6211\u4eec\u5c06\u4f7f\u7528Kafka\u4f5c\u4e3a\u76ee\u6807\u3002<br \/>\n\u6b64\u5916\uff0c\u6211\u4eec\u8fd8\u5c06\u901a\u8fc7CICS\u5e94\u7528\u7a0b\u5e8f\u66f4\u65b0VSAM\u6587\u4ef6\uff0c\u5e76\u786e\u8ba4\u66f4\u65b0\u4fe1\u606f\u5982\u4f55\u4f5c\u4e3a\u4f55\u79cd\u6d88\u606f\u4f20\u64ad\u5230Kafka\u4e3b\u9898\u4e0a\u3002<\/p>\n<h2>\u76f8\u5173\u6587\u7ae0<\/h2>\n<p>VSAM on z\/OS\u7684\u590d\u5236 &#8211; (1) \u73af\u5883\u8bbe\u7f6e\uff08\u81f3Db2\uff09<br \/>\nVSAM on z\/OS\u7684\u590d\u5236 &#8211; (2) \u590d\u5236\u914d\u7f6e\uff08\u81f3Db2\uff09<br \/>\nVSAM on z\/OS\u7684\u590d\u5236 &#8211; (3) \u4e0eKafka\u534f\u4f5c<br \/>\nVSAM on z\/OS\u7684\u590d\u5236 &#8211; (4) \u6dfb\u52a0VSAM\u6587\u4ef6\uff08Kafka\u534f\u4f5c\uff09\/\u590d\u5236\u6d4b\u8bd5<\/p>\n<h1>\u6574\u4e2a\u56fe\u50cf<\/h1>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/5-0.png\" alt=\"image.png\" \/><\/div>\n<h1>\u6e90\u4ee3\u7801\u8bbe\u7f6e<\/h1>\n<h2>VSAM\u548cLOGSTREAM\u7684\u51c6\u5907<\/h2>\n<p>\u53c2\u8003\uff1a\u5728z\/OS\u4e0a\u5b9a\u5236VSAM<\/p>\n<p>\u9009\u62e9\u590d\u5236\u5bf9\u8c61\u4e3aVSAM\uff08\u9700\u8981\u4fdd\u5b58\u5728SMS\u76ee\u6807\u5377\u4e2d\uff09\u3002\u5982\u679c\u5b58\u5728\u73b0\u6709\u5bf9\u8c61\uff0c\u5219\u68c0\u67e5LOGREPLICATE\u548cLOGSTREAMID\u662f\u5426\u5df2\u6307\u5b9a\u3002\u5982\u679c\u672a\u6307\u5b9a\uff0c\u5219\u6309\u7167\u524d\u9762\u7684\u793a\u4f8b\u8bbe\u7f6e\u53c2\u6570\u4ee5\u83b7\u53d6\u65e5\u5fd7\u3002<br \/>\n\u672c\u6b21\u5047\u8bbe\u6211\u4eec\u8981\u65b0\u5efaVSAM\u6587\u4ef6\uff0c\u5e76\u4f7f\u7528\u4ee5\u4e0bJCL\u6765\u65b0\u5efaVSAM\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>\/\/DEFFILET JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&amp;SYSUID\r\n\/\/*********************************************************************\r\n\/*\r\n\/\/DELETE    EXEC PGM=IDCAMS,REGION=0M\r\n\/\/SYSPRINT DD SYSOUT=*\r\n\/\/SYSIN    DD *\r\n \/* DELETE A FILET DATASET           *\/\r\n DELETE DB2P.CT56B4A1.FILET\r\n\/*\r\n\/\/DEFINE    EXEC PGM=IDCAMS,REGION=0M\r\n\/\/SYSPRINT DD SYSOUT=*\r\n\/\/SYSIN    DD *\r\n \/* DEFINE A FILET DATASET           *\/\r\n DEFINE CLUSTER(NAME(DB2P.CT56B4A1.FILET)-\r\n          REC(200)-\r\n          LOG(ALL) -\r\n          LOGREPLICATE -\r\n          LOGSTREAMID(CEC.RMTLRS.CECREPL) -\r\n          STORAGECLASS(SCDB2K) INDEXED) -\r\n         DATA(NAME(DB2P.CT56B4A1.FILET.DATA)-\r\n         RECSZ(200 200)-\r\n         UNIQUE -\r\n         KEYS(6 0)) -\r\n        INDEX(NAME(DB2P.CT56B4A1.FILET.INDEX)-\r\n          UNIQUE -\r\n          SHR(2 3))\r\n\/\/*\r\n<\/code><\/pre>\n<p>\u6bcf\u6761\u8bb0\u5f55\u662f200\u5b57\u8282\uff0c\u952e\u7684\u957f\u5ea6\u662f6\u5b57\u8282\u3002\u5e76\u4e14\u5047\u8bbe\u6211\u4eec\u5c06\u4f7f\u7528\u5148\u524d\u521b\u5efa\u7684LOGSTREAM\u3002\u5982\u679c\u8981\u4f7f\u7528\u5176\u4ed6LOGSTREAM\uff0c\u8bf7\u9002\u5f53\u5730\u521b\u5efaLOGSTREAM\u3002<\/p>\n<h2>VSAM\u7684\u5b9a\u4e49\u6ce8\u518c<\/h2>\n<p>\u53c2\u8003\uff1a1.1 VSAM\u5b9a\u4e49\u6ce8\u518c<\/p>\n<p>\u5728Linux\u4e0a\u8fd0\u884c\u7684\u5bb9\u5668\u4e2d\uff0c\u5c06\u8981\u590d\u5236\u7684VSAM\u6587\u4ef6\u7684\u4fe1\u606f\u5728VSAM Remote Source\u4e0a\u8fdb\u884c\u6ce8\u518c\u3002<br \/>\n\u8fde\u63a5\u5230\u5bb9\u5668\u5e76\u6267\u884cClassicInstallAndMaintenanceMenu.sh\u811a\u672c\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 ~]# podman exec -it --workdir \/classic\/usr\/scripts ClassicCDCVSAM2 bash\r\n[cecuser@ff6dc51e9523 scripts]$ .\/ClassicInstallAndMaintenanceMenu.sh\r\n*---------------------------------------------------------------------*\r\n*\r\n* IBM Data Replication VSAM for z\/OS Remote Source, V11.4\r\n* PID: 5737-C30\r\n*\r\n* Menu options:\r\n*    1.  Set the job card\r\n*    2.  Set the z\/OS High Level Qualifier (HLQ)\r\n*    3.  Set the z\/OS Unix System Services (USS) path\r\n*    4.  Install or replace z\/OS libraries with this container's maintenance level\r\n*    5.  Start a new z\/OS log reader\r\n*    6.  Stop the existing z\/OS log reader\r\n*    7.  Get diagnostic log for the existing z\/OS log reader\r\n*    8.  Configure a z\/OS VSAM cluster for the container environment\r\n*    9.  Configure VSAM IVP file\r\n*   10.  Update container scripts from the current image\r\n*   11.  Generate diagnostics tar\r\n*   99.  Exit this script\r\n*\r\n*---------------------------------------------------------------------*\r\nSelect an option: 8\r\n*---------------------------------------------------------------------*\r\n*\r\n* Classic CDC for VSAM\r\n* Define a VSAM cluster to Linux components for refresh\/replication\r\n*\r\n*---------------------------------------------------------------------*\r\nEnter a VSAM base cluster data set name:DB2P.CT56B4A1.FILET\r\nEnter the replication log to use for this VSAM DSN: CEC.RMTLRS.CECREPL\r\nYou provided DSN: &lt;DB2P.CT56B4A1.FILET&gt; with replication log: &lt;CEC.RMTLRS.CECREPL&gt;\r\nIs this correct? (Y or N)y\r\nDSN: &lt;DB2P.CT56B4A1.FILET&gt; added to &lt;..\/..\/shell\/vsamcat\/vsamcat.txt&gt;\r\n\r\nDo you want to generate JCL to ALTER DSN: &lt;DB2P.CT56B4A1.FILET&gt; for change capture? (Y or N)n\r\nIs CICS VR installed for VSAM batch logging? (Y or N)n\r\nDo you want to generate JCL to DEFINE LOGSTREAM for replication log: &lt;CEC.RMTLRS.CECREPL&gt;? (Y or N)n\r\nShould the IDCAMS ALTER JCL be submitted to your z\/OS system? (Y or N)n\r\n...\r\n<\/code><\/pre>\n<p>\u5728\u4e2d\u56fd\u672c\u5730\u5316\u4e2d\uff0c\u53ea\u9700\u8981\u4e00\u79cd\u9009\u9879\uff1a<br \/>\n\u5c06\u8981\u6ce8\u518c\u7684VSAM\u6587\u4ef6\uff08DB2P.CT56B4A1.FILET\uff09\u548c\u8981\u4f7f\u7528\u7684LOGSTREAM\uff08CEC.RMTLRS.CECREPL\uff09\u7684\u4fe1\u606f\u8fdb\u884c\u6ce8\u518c\u3002\u4e0d\u751f\u6210\u4efb\u4f55\u79cd\u7c7b\u7684JCL\u3002\u6307\u5b9a\u7684\u4fe1\u606f\u5c06\u4fdd\u5b58\u5728vsamcat.txt\u6587\u4ef6\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code>...\r\nVSAMDD,DB2P.CT56B4A1.FILET,32760,0,20,C,K,Y,0,32764,Y,CEC.RMTLRS.CECREPL\r\n<\/code><\/pre>\n<h2>\u521b\u5efaVSAM\u8868<\/h2>\n<p>\u53c2\u8003: \u521b\u5efa1.5\u4e2aVSAM\u8868<\/p>\n<p>\u4f7f\u7528\u7ecf\u5178\u6570\u636e\u67b6\u6784\uff0c\u8fde\u63a5\u5230VSAM\u8fdc\u7a0b\u6e90\uff0c\u5e76\u521b\u5efaVSAM\u8868\u3002<\/p>\n<h3>COPYBOOK\u7684\u5bfc\u5165<\/h3>\n<p>\u5047\u8bbe\u6587\u4ef6\u4e2d\u4fdd\u7559\u7684\u8bb0\u5f55\u5e03\u5c40\u5c06\u4f7f\u7528\u4ee5\u4e0bCOPYBOOK\uff0c\u56e0\u6b64\u8bf7\u5c06\u5176\u5bfc\u5165\u3002\u5bfc\u5165\u7684\u9879\u76ee\u5c06\u76f4\u63a5\u4f7f\u7528\u4e0a\u6b21\u521b\u5efa\u7684\u9879\u76ee\u3002\uff08\u5982\u679c\u5e0c\u671b\u521b\u5efa\u4e3a\u4e0d\u540c\u7684\u9879\u76ee\uff0c\u8bf7\u4ece\u9879\u76ee\u4e2d\u521b\u5efa\u3002\uff09<\/p>\n<pre class=\"post-pre\"><code>        01 RT-SEG.\r\n            02 RT-KEY       PIC  X(06) VALUE '000001'.\r\n            02 RT-ALPHA     PIC  X(10) VALUE 'ThisIsROOT'.\r\n            02 RT-ALPHAKANA PIC  X(10) VALUE '\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a'.\r\n            02 RT-MIXDBCS   PIC  X(32)\r\n                     VALUE '\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587'.\r\n            02 RT-MIXALL    PIC  X(40)\r\n                    VALUE 'ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78'.\r\n            02 RT-GRAPHIC   PIC  G(15) USAGE DISPLAY-1\r\n                   VALUE G'\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa'.\r\n            02 RT-DECIMAL   PIC  9(10) VALUE 1234567890.\r\n            02 RT-PACKED    PIC S9(05) COMP-3 VALUE 12345.\r\n            02 RT-BINHALF   PIC S9(04) COMP  VALUE 1234.\r\n            02 RT-BINFULL   PIC S9(08) COMP  VALUE 12345678.\r\n            02 RT-BINDBLE   PIC S9(12) COMP  VALUE 123456789012.\r\n            02 RT-GROUP.\r\n             03 RT-GRP01    PIC  X(10) VALUE 'ThisIs1st!'.\r\n             03 RT-GRP02    PIC  X(10) VALUE 'ThisIs2nd!'.\r\n             03 RT-GRP03    PIC  X(10) VALUE 'ThisIs3rd!'.\r\n            02  FILLER      PIC  X(15) VALUE SPACE.\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/24-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/25-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/26-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/27-0.png\" alt=\"image.png\" \/><\/div>\n<h3>\u521b\u5efaVSAM\u8868<\/h3>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/29-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/30-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/31-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/32-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/33-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/34-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/35-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/36-0.png\" alt=\"image.png\" \/><\/div>\n<h3>\u751f\u6210\/\u5e94\u7528\u6570\u636e\u5e93\u5b9a\u4e49\u8bed\u8a00 (DDL)<\/h3>\n<p>\u9700\u8981\u5c06\u5728CDA\u4e0a\u521b\u5efa\u7684VSAM\u8868\u5728VSAM Remote Source\u4e0a\u8fdb\u884c\u540c\u6b65\uff0c\u56e0\u4e3a\u53ea\u662f\u5c06\u5176\u4f5c\u4e3aWindows CDA\u4e0a\u7684\u9879\u76ee\u521b\u5efa\uff0c\u6240\u4ee5\u9700\u8981\u751f\u6210DDL\uff08SQL\uff09\u5e76\u6267\u884c\u4ee5\u5728VSAM Remote Source\u4e0a\u5b9e\u73b0\u540c\u6b65\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/39-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/40-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/41-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/42-0.png\" alt=\"image.png\" \/><\/div>\n<details>\u53c2\u8003\uff1a\u5728\u4e0a\u8ff0DDL\u4e2d\u521b\u5efa<br \/>\n&#8211;\u521b\u5efa\u8868&#8221;TEST01&#8243;.&#8221;FILET&#8221; DBTYPE VSAM<br \/>\nDS &#8220;DB2P.CT56B4A1.FILET&#8221;<br \/>\n(<br \/>\n&#8220;RT_KEY&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 0 LENGTH 6<br \/>\nDATATYPE C<br \/>\nUSE AS CHAR(6),<br \/>\n&#8220;RT_ALPHA&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 6 LENGTH 10<br \/>\nDATATYPE C<br \/>\nUSE AS CHAR(10),<br \/>\n&#8220;RT_ALPHAKANA&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 16 LENGTH 10<br \/>\nDATATYPE C<br \/>\nUSE AS CHAR(10),<br \/>\n&#8220;RT_MIXDBCS&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 26 LENGTH 32<br \/>\nDATATYPE C<br \/>\nUSE AS CHAR(32),<br \/>\n&#8220;RT_MIXALL&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 58 LENGTH 40<br \/>\nDATATYPE C<br \/>\nUSE AS CHAR(40),<br \/>\n&#8220;RT_GRAPHIC&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 98 LENGTH 15<br \/>\nDATATYPE C<br \/>\nUSE AS GRAPHIC(15),<br \/>\n&#8220;RT_DECIMAL&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 128 LENGTH 10<br \/>\nDATATYPE UC<br \/>\nUSE AS CHAR(10),<br \/>\n&#8220;RT_PACKED&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 138 LENGTH 3<br \/>\nDATATYPE P<br \/>\nUSE AS DECIMAL(5, 0),<br \/>\n&#8220;RT_BINHALF&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 141 LENGTH 2<br \/>\nDATATYPE H<br \/>\nUSE AS SMALLINT,<br \/>\n&#8220;RT_BINFULL&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 143 LENGTH 4<br \/>\nDATATYPE F<br \/>\nUSE AS INTEGER,<br \/>\n&#8220;RT_BINDBLE&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 147 LENGTH 8<br \/>\nDATATYPE D<br \/>\nUSE AS DECIMAL(12, 0),<br \/>\n&#8220;RT_GRP01&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 155 LENGTH 10<br \/>\nDATATYPE C<br \/>\nUSE AS CHAR(10),<br \/>\n&#8220;RT_GRP02&#8221; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 165 LENGTH 10<br \/>\nDATATYPE C<br \/>\nUSE AS CHAR(10),<br \/>\n&#8220;RT_GRP03&#8243; SOURCE DEFINITION<br \/>\nDATAMAP OFFSET 175 LENGTH 10<br \/>\nDATATYPE C<br \/>\nUSE AS CHAR(10));<\/p>\n<p>\u4fee\u6539\u8868&#8221;TEST01&#8221;.&#8221;FILET&#8221;\u4ee5\u6355\u83b7\u6570\u636e\u66f4\u6539\u3002<\/p>\n<\/details>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/44-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/45-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/46-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/47-0.png\" alt=\"image.png\" \/><\/div>\n<h1>\u76ee\u6807\u65b9\u7684\u8bbe\u7f6e<\/h1>\n<p>\u53c2\u8003\u8d44\u6599: \u6784\u5efa\u76ee\u6807\u73af\u5883(Kafka)<br \/>\n\u76ee\u6807\u65b9\u6848\u5047\u8bbe\u5c06\u4f7f\u7528\u5148\u524d\u521b\u5efa\u7684Kafka Broker\uff0c\u56e0\u6b64\u65e0\u9700\u7279\u522b\u6307\u5b9a\u3002<\/p>\n<h1>\u590d\u5236\u914d\u7f6e<\/h1>\n<p>\u53c2\u8003\uff1a\u590d\u5236\u914d\u7f6e<\/p>\n<h2>\u590d\u5236\u8bbe\u7f6e\uff08\u8ba2\u9605\uff09<\/h2>\n<p>\u8bf7\u4f7f\u7528\u7ba1\u7406\u63a7\u5236\u53f0\u8fde\u63a5\u5230\u8bbf\u95ee\u670d\u52a1\u5668\u5e76\u914d\u7f6e\u590d\u5236\u3002\u6e90\u6570\u636e\u5b58\u50a8\u548c\u76ee\u6807\u6570\u636e\u5b58\u50a8\u5e94\u5047\u8bbe\u5df2\u7ecf\u521b\u5efa\uff0c\u56e0\u6b64\u9700\u8981\u4ece\u8ba2\u9605\u8bbe\u7f6e\u4e2d\u9010\u4e00\u6dfb\u52a0\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/54-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/55-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/56-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/57-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/58-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/59-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/60-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/61-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/62-0.png\" alt=\"image.png\" \/><\/div>\n<h3>Kafka\u5c5e\u6027\u7684\u8bbe\u7f6e<\/h3>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/64-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/65-0.png\" alt=\"image.png\" \/><\/div>\n<h2>\u6267\u884c\u590d\u5236<\/h2>\n<h3>\u5237\u65b0<\/h3>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u5c06\u5f53\u524d\u7684VSAM\u6570\u636e\u540c\u6b65\u5230Kafka\u4e2d\u3002<br \/>\n\u5728\u8fd9\u4e2a\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u5c06\u4fdd\u6301CICS\u4e2d\u7684VSAM\u5904\u4e8e\u5173\u95ed\u72b6\u6001\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/69-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/70-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u6211\u6765\u67e5\u770b\u4e00\u4e0bKafka\u4e0a\u7684Topic\u5217\u8868\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 ~\/Kafka]# \/opt\/confluent-6.2.0\/bin\/kafka-topics --list --bootstrap-server localhost:9092 | grep -i filet\r\ncdc_kafka_test01-FILET01-commitstream\r\ncdc_kafka_test01.filet01.sourcedb.vsam.test01.filet\r\n<\/code><\/pre>\n<p>\u4f7f\u7528kafka-avro-console-consumer\u547d\u4ee4\u6765\u67e5\u770b\u4e3b\u9898cdc_kafka_test01.filet01.sourcedb.vsam.test01.filet\u7684\u6d88\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 ~\/Kafka]# \/opt\/confluent-6.2.0\/bin\/kafka-avro-console-consumer --from-beginning --topic cdc_kafka_test01.filet01.sourcedb.vsam.test01.filet --bootstrap-server localhost:9092 --property print.key=true --property print.schema.ids=true\r\n{\"RT_KEY\":{\"string\":\"000001\"}}  3       {\"RT_KEY\":{\"string\":\"000001\"},\"RT_ALPHA\":{\"string\":\"ThisIsROOT\"},\"RT_ALPHAKANA\":{\"string\":\"\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\"},\"RT_MIXDBCS\":{\"string\":\"\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587  \"},\"RT_MIXALL\":{\"string\":\"ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\"},\"RT_GRAPHIC\":{\"string\":\"\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\"},\"RT_DECIMAL\":{\"string\":\"1234567890\"},\"RT_PACKED\":{\"int\":12345},\"RT_BINHALF\":{\"int\":1234},\"RT_BINFULL\":{\"int\":12345678},\"RT_BINDBLE\":{\"long\":123456789012},\"RT_GRP01\":{\"string\":\"ThisIs1st!\"},\"RT_GRP02\":{\"string\":\"ThisIs2nd!\"},\"RT_GRP03\":{\"string\":\"ThisIs3rd!\"}}       4\r\n{\"RT_KEY\":{\"string\":\"000002\"}}  3       {\"RT_KEY\":{\"string\":\"000002\"},\"RT_ALPHA\":{\"string\":\"11:11:54.3\"},\"RT_ALPHAKANA\":{\"string\":\"\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\"},\"RT_MIXDBCS\":{\"string\":\"\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587  \"},\"RT_MIXALL\":{\"string\":\"ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\"},\"RT_GRAPHIC\":{\"string\":\"\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\"},\"RT_DECIMAL\":{\"string\":\"1234567890\"},\"RT_PACKED\":{\"int\":12345},\"RT_BINHALF\":{\"int\":1234},\"RT_BINFULL\":{\"int\":12345678},\"RT_BINDBLE\":{\"long\":123456789012},\"RT_GRP01\":{\"string\":\"ThisIs1st!\"},\"RT_GRP02\":{\"string\":\"ThisIs2nd!\"},\"RT_GRP03\":{\"string\":\"ThisIs3rd!\"}}       4\r\n{\"RT_KEY\":{\"string\":\"000003\"}}  3       {\"RT_KEY\":{\"string\":\"000003\"},\"RT_ALPHA\":{\"string\":\"ThisIsROOT\"},\"RT_ALPHAKANA\":{\"string\":\"\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\"},\"RT_MIXDBCS\":{\"string\":\"\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587  \"},\"RT_MIXALL\":{\"string\":\"ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\"},\"RT_GRAPHIC\":{\"string\":\"\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\"},\"RT_DECIMAL\":{\"string\":\"1234567890\"},\"RT_PACKED\":{\"int\":12345},\"RT_BINHALF\":{\"int\":1234},\"RT_BINFULL\":{\"int\":12345678},\"RT_BINDBLE\":{\"long\":123456789012},\"RT_GRP01\":{\"string\":\"ThisIs1st!\"},\"RT_GRP02\":{\"string\":\"ThisIs2nd!\"},\"RT_GRP03\":{\"string\":\"ThisIs3rd!\"}}       4\r\n{\"RT_KEY\":{\"string\":\"000004\"}}  3       {\"RT_KEY\":{\"string\":\"000004\"},\"RT_ALPHA\":{\"string\":\"ThisIsROOT\"},\"RT_ALPHAKANA\":{\"string\":\"\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\"},\"RT_MIXDBCS\":{\"string\":\"\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587  \"},\"RT_MIXALL\":{\"string\":\"ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\"},\"RT_GRAPHIC\":{\"string\":\"\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\"},\"RT_DECIMAL\":{\"string\":\"1234567890\"},\"RT_PACKED\":{\"int\":12345},\"RT_BINHALF\":{\"int\":1234},\"RT_BINFULL\":{\"int\":12345678},\"RT_BINDBLE\":{\"long\":123456789012},\"RT_GRP01\":{\"string\":\"ThisIs1st!\"},\"RT_GRP02\":{\"string\":\"ThisIs2nd!\"},\"RT_GRP03\":{\"string\":\"ThisIs3rd!\"}}       4\r\n<\/code><\/pre>\n<details>[root@test12 ~]# curl -s http:\/\/localhost:8081\/schemas\/ids\/4 | jq .schema | sed -e &#8216;s\/^&#8221;\/\/&#8217; -e &#8216;s\/&#8221;$\/\/&#8217; -e &#8216;s\/\\\\\/\/g&#8217; | jq .{<br \/>\n&#8220;type&#8221;: &#8220;record&#8221;,<br \/>\n&#8220;name&#8221;: &#8220;FILET&#8221;,<br \/>\n&#8220;namespace&#8221;: &#8220;value.SOURCEDB.VSAM.TEST01&#8221;,<br \/>\n&#8220;fields&#8221;: [<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_KEY&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;string&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;CHARACTER&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_KEY&#8221;,<br \/>\n&#8220;length&#8221;: 6<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: &#8220;&#8221;<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_ALPHA&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;string&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;CHARACTER&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_ALPHA&#8221;,<br \/>\n&#8220;length&#8221;: 10<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: &#8220;&#8221;<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_ALPHAKANA&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;string&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;CHARACTER&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_ALPHAKANA&#8221;,<br \/>\n&#8220;length&#8221;: 10<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: &#8220;&#8221;<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_MIXDBCS&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;string&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;CHARACTER&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_MIXDBCS&#8221;,<br \/>\n&#8220;length&#8221;: 32<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: &#8220;&#8221;<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_MIXALL&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;string&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;CHARACTER&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_MIXALL&#8221;,<br \/>\n&#8220;length&#8221;: 40<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: &#8220;&#8221;<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_GRAPHIC&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;string&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;VARCHAR&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_GRAPHIC&#8221;,<br \/>\n&#8220;length&#8221;: 15<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: &#8220;&#8221;<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_DECIMAL&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;string&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;CHARACTER&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_DECIMAL&#8221;,<br \/>\n&#8220;length&#8221;: 10<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: &#8220;&#8221;<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_PACKED&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;int&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;DECIMAL&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_PACKED&#8221;,<br \/>\n&#8220;precision&#8221;: 5,<br \/>\n&#8220;scale&#8221;: 0<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: 0<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_BINHALF&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;int&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;SMALLINT&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_BINHALF&#8221;<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: 0<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_BINFULL&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;int&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;INTEGER&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_BINFULL&#8221;<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: 0<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_BINDBLE&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;long&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;DECIMAL&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_BINDBLE&#8221;,<br \/>\n&#8220;precision&#8221;: 12,<br \/>\n&#8220;scale&#8221;: 0<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: 0<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_GRP01&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;string&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;CHARACTER&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_GRP01&#8221;,<br \/>\n&#8220;length&#8221;: 10<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: &#8220;&#8221;<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_GRP02&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;string&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;CHARACTER&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_GRP02&#8221;,<br \/>\n&#8220;length&#8221;: 10<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: &#8220;&#8221;<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;RT_GRP03&#8221;,<br \/>\n&#8220;type&#8221;: [<br \/>\n{<br \/>\n&#8220;type&#8221;: &#8220;string&#8221;,<br \/>\n&#8220;logicalType&#8221;: &#8220;CHARACTER&#8221;,<br \/>\n&#8220;dbColumnName&#8221;: &#8220;RT_GRP03&#8221;,<br \/>\n&#8220;length&#8221;: 10<br \/>\n},<br \/>\n&#8220;null&#8221;<br \/>\n],<br \/>\n&#8220;doc&#8221;: &#8220;&#8221;,<br \/>\n&#8220;default&#8221;: &#8220;&#8221;<br \/>\n}<br \/>\n]<br \/>\n}<\/p>\n<\/details>\n<h3>\u5f00\u59cb\u955c\u50cf<\/h3>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/77-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/78-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/79-0.png\" alt=\"image.png\" \/><\/div>\n<h1>\u590d\u5236\u6d4b\u8bd51<\/h1>\n<p>\u5728\u4e0a\u8ff0\u8bbe\u7f6e\u5b8c\u6210\u540e\uff0c\u6211\u4eec\u5c06\u901a\u8fc7CICS\u5e94\u7528\u7a0b\u5e8f\u66f4\u65b0VSAM\u6587\u4ef6\u5e76\u786e\u8ba4\u6b64\u65f6\u7684\u60c5\u51b5\u3002<br \/>\n\u4e3b\u8981\u5173\u6ce8\u5305\u542bDBCS\u3001\u6570\u5b57\u7b49\u591a\u79cd\u7c7b\u578b\u8bb0\u5f55\u7684\u590d\u5236\u72b6\u6001\uff0c\u4ee5\u53ca\u63d2\u5165\u3001\u66f4\u65b0\u3001\u5220\u9664\u64cd\u4f5c\u5982\u4f55\u4f20\u64ad\u5230Kafka\u3002<\/p>\n<h2>\u51c6\u5907CICS\u5e94\u7528\u7a0b\u5e8f<\/h2>\n<p>\u6211\u4f1a\u51c6\u5907\u51e0\u4e2a\u7528\u4e8e\u7b80\u5355VSAM\u6587\u4ef6\u8bbf\u95ee\u7684\u7a0b\u5e8f\u3002\u57fa\u672c\u4e0a\u662f\u57fa\u4e8eCOMMAREA\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u53ea\u9700\u6307\u5b9a\u5173\u952e\u503c\u5373\u53ef\u5355\u4e2a\u8bbf\u95eeVSAM\u6587\u4ef6\u3002\u7531\u4e8e\u662f\u6d4b\u8bd5\u7528\u9014\uff0c\u6240\u4ee5\u8fdb\u884c\u4e86\u76f8\u5f53\u7b80\u5316\u3002<br \/>\n\u203b\u53ea\u6709\u66f4\u65b0\u64cd\u4f5c\u4f1a\u53cd\u6620\u5728Kafka\u4e0a\uff0c\u6240\u4ee5\u67e5\u8be2\u64cd\u4f5c\u5e76\u6ca1\u6709\u592a\u591a\u610f\u4e49\uff0c\u4f46\u6211\u8fd8\u662f\u521b\u5efa\u4e86\u5b83\u4eec\u3002<\/p>\n<h3>\u65b0\u589e\u8bb0\u5f55<\/h3>\n<p>\u5f53\u60a8\u5728\u8c03\u7528\u65f6\u6307\u5b9a6\u5b57\u8282\u7684\u5173\u952e\u5b57\uff08Key\uff09\u503c\u7ed9COMMAREA\uff0c\u9664\u4e86\u5173\u952e\u5b57\uff08Key\uff09\u503c\u5916\uff0c\u5c06\u4f1a\u5728VSAM(KSDS)\u4e2d\u6dfb\u52a0\u4e00\u6761\u8bb0\u5f55\uff0c\u8be5\u8bb0\u5f55\u5c06\u8bbe\u7f6e\u4e3a\u56fa\u5b9a\u7684\u5b57\u7b26\u4e32\uff08\u5d4c\u5165\u5728\u6e90\u4ee3\u7801\u4e2d\u7684\u5b57\u7b26\u4e32\uff09\u3002<br \/>\n\u793a\u4f8b\u6267\u884c\uff1aCECI LINK PROGRAM(TGFADD) COMMAREA(000005)\u3002<\/p>\n<details>\u6765\u6e90\uff1aTGFADDTGFADD<br \/>\n\u6807\u8bc6\u90e8\u5206\u3002<br \/>\n\u7a0b\u5e8f\u6807\u8bc6\u3002TGFADD\u3002<br \/>\n\u6570\u636e\u90e8\u5206\u3002<br \/>\n\u5de5\u4f5c\u533a\u5b58\u50a8\u90e8\u5206\u3002<br \/>\n01 RESP1 PIC S9(08) COMP VALUE 0\u3002<\/p>\n<p>01 Z-EIBFN PIC X(15) VALUE &#8216; &#8216;\u3002<br \/>\n01 Z-EIBRESP PIC 9(4) VALUE ZERO\u3002<br \/>\n01 Z-EIBRESP2 PIC 9(4) VALUE ZERO\u3002<\/p>\n<p>01 CURRENT-DATE\u3002<br \/>\n03 CURRENT-YEAR PIC 9(2)\u3002<br \/>\n03 CURRENT-MONTH PIC 9(2)\u3002<br \/>\n03 CURRENT-DAY PIC 9(2)\u3002<br \/>\n01 CURRENT-TIME\u3002<br \/>\n03 CURRENT-HOUR PIC 9(2)\u3002<br \/>\n03 CURRENT-MINUTE PIC 9(2)\u3002<br \/>\n03 CURRENT-SECOND PIC 9(2)\u3002<br \/>\n03 CURRENT-HNDSEC PIC 9(2)\u3002<\/p>\n<p>01 WS-RAWTIME PIC S9(15) COMP-3\u3002<br \/>\n01 CURRENT-DATE-CICS PIC X(8)\u3002<br \/>\n01 CURRENT-TIME-CICS PIC X(8)\u3002<\/p>\n<p>01 TSQ-NAME PIC X(8) VALUE &#8216;TSQTESTQ&#8217;\u3002<br \/>\n01 FILE-NAME PIC X(8) VALUE &#8216;FILET&#8217;\u3002<\/p>\n<p>01 RT-SEG\u3002<br \/>\n02 RT-KEY PIC X(06) VALUE &#8216;000001&#8217;\u3002<br \/>\n02 RT-ALPHA PIC X(10) VALUE &#8216;ThisIsROOT&#8217;\u3002<br \/>\n02 RT-ALPHAKANA PIC X(10) VALUE &#8216;\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a&#8217;\u3002<br \/>\n02 RT-MIXDBCS PIC X(32)<br \/>\nVALUE &#8216;\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587&#8217;\u3002<br \/>\n02 RT-MIXALL PIC X(40)<br \/>\nVALUE &#8216;ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78&#8217;\u3002<br \/>\n02 RT-GRAPHIC PIC G(15) USAGE DISPLAY-1<br \/>\nVALUE G&#8217;\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa&#8217;\u3002<br \/>\n02 RT-DECIMAL PIC 9(10) VALUE 1234567890\u3002<br \/>\n02 RT-PACKED PIC S9(05) COMP-3 VALUE 12345\u3002<br \/>\n02 RT-BINHALF PIC S9(04) COMP VALUE 1234\u3002<br \/>\n02 RT-BINFULL PIC S9(08) COMP VALUE 12345678\u3002<br \/>\n02 RT-BINDBLE PIC S9(12) COMP VALUE 123456789012\u3002<br \/>\n02 RT-GROUP\u3002<br \/>\n03 RT-GRP01 PIC X(10) VALUE &#8216;ThisIs1st!&#8217;\u3002<br \/>\n03 RT-GRP02 PIC X(10) VALUE &#8216;ThisIs2nd!&#8217;\u3002<br \/>\n03 RT-GRP03 PIC X(10) VALUE &#8216;ThisIs3rd!&#8217;\u3002<br \/>\n02 FILLER PIC X(15) VALUE SPACE\u3002<\/p>\n<p>01 TEMP-RECORD PIC X(200)\u3002<br \/>\n*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\u8054\u673a\u90e8\u5206\u3002<br \/>\n01 DFHCOMMAREA\u3002<br \/>\n03 COMMAREA-DATA PIC X(6)\u3002<br \/>\n*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\u8fc7\u7a0b\u90e8\u5206\u3002<br \/>\nDISPLAY &#8216;TGFADD\u5f00\u59cb&#8212;&#8212;&#8212;&#8212;-&#8216;<br \/>\n* \u4eceACCEPT\u4e2d\u83b7\u53d6\u65f6\u95f4\u6233<br \/>\nACCEPT CURRENT-DATE FROM DATE\u3002<br \/>\nACCEPT CURRENT-TIME FROM TIME\u3002<br \/>\nDISPLAY &#8216;\u63a5\u6536\u5230\u7684\u65e5\u671f = &#8216; CURRENT-MONTH &#8216;\/&#8217;<br \/>\nCURRENT-DAY &#8216;\/&#8217; CURRENT-YEAR &#8216; (mm\/dd\/yy)&#8217;\u3002<br \/>\nDISPLAY &#8216; \u65f6\u95f4 = &#8216; CURRENT-HOUR &#8216;:&#8217;<br \/>\nCURRENT-MINUTE &#8216;:&#8217; CURRENT-SECOND &#8216;.&#8217; CURRENT-HNDSEC<\/p>\n<p>* \u663e\u793aCOMMAREA<br \/>\nDISPLAY &#8216; \u6536\u5230\u7684COMMAREA\uff1a&#8217; COMMAREA-DATA\u3002<\/p>\n<p>* \u5c06COMMAREA-DATA\u79fb\u52a8\u5230Key<br \/>\nIF EIBCALEN &gt; 0 AND EIBCALEN &lt; 7 THEN<br \/>\nMOVE COMMAREA-DATA TO RT-KEY<br \/>\nEND-IF\u3002<\/p>\n<p>* \u5199\u5165TS<br \/>\nEXEC CICS WRITEQ TS \u961f\u5217(TSQ-NAME)<br \/>\n\u6765\u6e90(RT-SEG)<br \/>\n\u957f\u5ea6(RT-SEG\u7684\u957f\u5ea6)<br \/>\nRESP(Z-EIBRESP)<br \/>\nRESP2(Z-EIBRESP2)<br \/>\nEND-EXEC\u3002<\/p>\n<p>IF Z-EIBRESP NOT = DFHRESP(NORMAL) THEN<br \/>\nDISPLAY &#8216;***** WRITEQ TS\u9519\u8bef\uff01&#8217;<br \/>\nDISPLAY &#8216;RESP\uff1a&#8217; Z-EIBRESP<br \/>\nDISPLAY &#8216;RESP2\uff1a&#8217; Z-EIBRESP2<br \/>\nEXEC CICS ABEND ABCODE(&#8216;TTTT&#8217;) END-EXEC<br \/>\nEXEC CICS RETURN END-EXEC<br \/>\nELSE<br \/>\nDISPLAY &#8216;\u5199\u5165TS\u6210\u529f&#8217;<br \/>\nEND-IF\u3002<\/p>\n<p>* \u5199\u5165\u6587\u4ef6\uff08\u6dfb\u52a0\u8bb0\u5f55\uff09<br \/>\nEXEC CICS WRITE FILE(FILE-NAME)<br \/>\n\u6765\u6e90(RT-SEG)<br \/>\nRIDFLD(RT-KEY)<br \/>\n\u957f\u5ea6(RT-SEG\u7684\u957f\u5ea6)<br \/>\nRESP(Z-EIBRESP)<br \/>\nRESP2(Z-EIBRESP2)<br \/>\nEND-EXEC\u3002<\/p>\n<p>IF Z-EIBRESP NOT = DFHRESP(NORMAL) THEN<br \/>\nDISPLAY &#8216;***** WRITE FILE\u9519\u8bef\uff01&#8217;<br \/>\nDISPLAY &#8216;RESP\uff1a&#8217; Z-EIBRESP<br \/>\nDISPLAY &#8216;RESP2\uff1a&#8217; Z-EIBRESP2<br \/>\nIF Z-EIBRESP = DFHRESP(DUPREC) THEN<br \/>\nDISPLAY &#8216;\u91cd\u590d\u7684\u952e\uff01&#8217;<br \/>\nEND-IF<br \/>\nEXEC CICS ABEND ABCODE(&#8216;TTTT&#8217;) END-EXEC<br \/>\nEXEC CICS RETURN END-EXEC<br \/>\nELSE<br \/>\nDISPLAY &#8216;\u5199\u5165\u6587\u4ef6\u6210\u529f&#8217;<br \/>\nEND-IF\u3002<\/p>\n<p>* \u663e\u793a\u6570\u636e<br \/>\nDISPLAY &#8216;*****&#8217;\u3002<br \/>\n* DISPLAY &#8216;\u957f\u5ea6\u603b\u8ba1\uff1a&#8217; RT-SEG\u7684\u957f\u5ea6\u3002<br \/>\n* DISPLAY &#8216;\u957f\u5ea6RT-PACKED\uff1a&#8217; RT-PACKED\u7684\u957f\u5ea6\u3002<br \/>\n* DISPLAY &#8216;\u957f\u5ea6RT-BINHALF\uff1a&#8217; RT-BINHALF\u7684\u957f\u5ea6\u3002<br \/>\n* DISPLAY &#8216;\u957f\u5ea6RT-BINFULL\uff1a&#8217; RT-BINFULL\u7684\u957f\u5ea6\u3002<br \/>\n* DISPLAY &#8216;\u957f\u5ea6RT-BINDBLE\uff1a&#8217; RT-BINDBLE\u7684\u957f\u5ea6\u3002<br \/>\nDISPLAY RT-SEG\u3002<br \/>\nDISPLAY &#8216;*****&#8217;\u3002<\/p>\n<p>* \u5ef6\u8fdf<br \/>\nEXEC CICS DELAY FOR SECONDS(1) END-EXEC\u3002<br \/>\n* \u7ed3\u675f<br \/>\nDISPLAY &#8216;TGFADD\u7ed3\u675f&#8212;&#8212;&#8212;&#8212;&#8212;&#8216;\u3002<br \/>\nEXEC CICS RETURN END-EXEC\u3002<\/p>\n<\/details>\n<h3>\u5531\u7247\u66f4\u65b0<\/h3>\n<p>\u5f53\u4f7f\u7528COMMAREA\u6307\u5b9a\u5173\u952e\u503c\uff086\u5b57\u8282\uff09\u8c03\u7528\u65f6\uff0c\u5c06\u8986\u76d6\u5177\u6709\u6307\u5b9a\u5173\u952e\u503c\u7684\u8bb0\u5f55\u7684\u4fe1\u606f\u3002<br \/>\n\u57fa\u672c\u4e0a\uff0c\u9664\u4e86\u5173\u952e\u503c\u4e4b\u5916\uff0c\u8bb0\u5f55\u4e2d\u8bbe\u7f6e\u4e86\u56fa\u5b9a\u7684\u5b57\u7b26\u4e32\uff08\u5728\u6e90\u4ee3\u7801\u4e2d\u5d4c\u5165\u7684\u5b57\u7b26\u4e32\uff09\u5c06\u88ab\u6dfb\u52a0\u5230VSAM(KSDS)\u3002<br \/>\n\u7136\u800c\uff0cRT-ALPHA\u5b57\u6bb5\u5c06\u8bbe\u7f6e\u8fd0\u884c\u65f6\u7684\u65f6\u95f4\u6233\uff0c\u800cRT-MIXDBCS\u5b57\u6bb5\u5c06\u8bbe\u7f6e\u5305\u542b\u73af\u5883\u76f8\u5173\u5b57\u7b26\u7684\u5b57\u7b26\u4e32\u3002<br \/>\n\u6267\u884c\u793a\u4f8b\uff1aCECI LINK PROGRAM(TGFUPDT) COMMAREA(000005)<\/p>\n<details>\u6765\u6e90: TGFUPDTTGFUPDT<br \/>\n\u6807\u8bc6 \u90e8\u5206\u3002<br \/>\n\u7a0b\u5e8f\u7f16\u53f7 TGFUPDT\u3002<br \/>\n\u6570\u636e \u90e8\u5206\u3002<br \/>\n\u5de5\u4f5c\u5b58\u50a8 \u90e8\u5206\u3002<br \/>\n01 RESP1 PIC S9(08) COMP VALUE 0\u3002<\/p>\n<p>01 Z-EIBFN PIC X(15) VALUE &#8216; &#8216;\u3002<br \/>\n01 Z-EIBRESP PIC 9(4) VALUE ZERO\u3002<br \/>\n01 Z-EIBRESP2 PIC 9(4) VALUE ZERO\u3002<\/p>\n<p>01 CURRENT-DATE\u3002<br \/>\n03 CURRENT-YEAR PIC 9(2)\u3002<br \/>\n03 CURRENT-MONTH PIC 9(2)\u3002<br \/>\n03 CURRENT-DAY PIC 9(2)\u3002<br \/>\n01 CURRENT-TIME\u3002<br \/>\n03 CURRENT-HOUR PIC 9(2)\u3002<br \/>\n03 CURRENT-MINUTE PIC 9(2)\u3002<br \/>\n03 CURRENT-SECOND PIC 9(2)\u3002<br \/>\n03 CURRENT-HNDSEC PIC 9(2)\u3002<\/p>\n<p>01 WS-RAWTIME PIC S9(15) COMP-3\u3002<br \/>\n01 CURRENT-DATE-CICS PIC X(8)\u3002<br \/>\n01 CURRENT-TIME-CICS PIC X(8)\u3002<\/p>\n<p>01 TSQ-NAME PIC X(8) VALUE &#8216;TSQTESTQ&#8217;\u3002<br \/>\n01 FILE-NAME PIC X(8) VALUE &#8216;FILET&#8217;\u3002<\/p>\n<p>01 RT-SEG\u3002<br \/>\n02 RT-KEY PIC X(06) VALUE &#8216;000001&#8217;\u3002<br \/>\n02 RT-ALPHA PIC X(10) VALUE &#8217;00:00:00.0&#8217;\u3002<br \/>\n02 RT-ALPHAKANA PIC X(10) VALUE &#8216;\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a&#8217;\u3002<br \/>\n02 RT-MIXDBCS PIC X(32)<br \/>\nVALUE &#8216;\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u3231\u2460\u2160\u9bf5\u9c3a&#8217;\u3002<br \/>\n02 RT-MIXALL PIC X(40)<br \/>\nVALUE &#8216;ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78&#8217;\u3002<br \/>\n02 RT-GRAPHIC PIC G(15) USAGE DISPLAY-1<br \/>\nVALUE G&#8217;\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa&#8217;\u3002<br \/>\n02 RT-DECIMAL PIC 9(10) VALUE 1234567890\u3002<br \/>\n02 RT-PACKED PIC S9(05) COMP-3 VALUE 12345\u3002<br \/>\n02 RT-BINHALF PIC S9(04) COMP VALUE 1234\u3002<br \/>\n02 RT-BINFULL PIC S9(08) COMP VALUE 12345678\u3002<br \/>\n02 RT-BINDBLE PIC S9(12) COMP VALUE 123456789012\u3002<br \/>\n02 RT-GROUP\u3002<br \/>\n03 RT-GRP01 PIC X(10) VALUE &#8216;ThisIs1st!&#8217;\u3002<br \/>\n03 RT-GRP02 PIC X(10) VALUE &#8216;ThisIs2nd!&#8217;\u3002<br \/>\n03 RT-GRP03 PIC X(10) VALUE &#8216;ThisIs3rd!&#8217;\u3002<br \/>\n02 FILLER PIC X(15) VALUE \u7a7a\u683c\u3002<\/p>\n<p>01 TEMP-SEG\u3002<br \/>\n02 TEMP-KEY PIC X(06)\u3002<br \/>\n02 TEMP-ALPHA PIC X(10)\u3002<br \/>\n02 TEMP-ALPHAKANA PIC X(10)\u3002<br \/>\n02 TEMP-MIXDBCS PIC X(32)\u3002<br \/>\n02 TEMP-MIXALL PIC X(40)\u3002<br \/>\n02 TEMP-GRAPHIC PIC G(15) USAGE DISPLAY-1\u3002<br \/>\n02 TEMP-DECIMAL PIC 9(10)\u3002<br \/>\n02 TEMP-PACKED PIC S9(05) COMP-3\u3002<br \/>\n02 TEMP-BINHALF PIC S9(04) COMP\u3002<br \/>\n02 TEMP-BINFULL PIC S9(08) COMP\u3002<br \/>\n02 TEMP-BINDBLE PIC S9(12) COMP\u3002<br \/>\n02 TEMP-GROUP\u3002<br \/>\n03 TEMP-GRP01 PIC X(10)\u3002<br \/>\n03 TEMP-GRP02 PIC X(10)\u3002<br \/>\n03 TEMP-GRP03 PIC X(10)\u3002<br \/>\n02 FILLER PIC X(15)\u3002<\/p>\n<p>01 CURRENT-TIME-STR PIC X(10) VALUE &#8217;00:00:00.0&#8217;\u3002<\/p>\n<p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\u94fe\u63a5 \u90e8\u5206\u3002<br \/>\n01 DFHCOMMAREA\u3002<br \/>\n03 COMMAREA-DATA PIC X(6)\u3002<br \/>\n*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\u8fc7\u7a0b \u90e8\u5206\u3002<br \/>\n\u663e\u793a &#8216;TGFUPDT \u5f00\u59cb&#8212;&#8212;&#8212;&#8212;-&#8216;<br \/>\n* \u4eceACCEPT\u83b7\u53d6\u65f6\u95f4\u6233<br \/>\n\u4ece\u65e5\u671f\u63a5\u6536 CURRENT-DATE\u3002<br \/>\n\u4ece\u65f6\u95f4\u63a5\u6536 CURRENT-TIME\u3002<br \/>\n\u663e\u793a &#8216;\u63a5\u6536\u5230\u7684\u65e5\u671f = &#8216; CURRENT-MONTH &#8216;\/&#8217;<br \/>\nCURRENT-DAY &#8216;\/&#8217; CURRENT-YEAR &#8216; (mm\/dd\/yy)&#8217;\u3002<br \/>\n\u663e\u793a &#8216; \u65f6\u95f4 = &#8216; CURRENT-HOUR &#8216;:&#8217;<br \/>\nCURRENT-MINUTE &#8216;:&#8217; CURRENT-SECOND &#8216;.&#8217; CURRENT-HNDSEC\u3002<\/p>\n<p>* \u663e\u793aCOMMAREA<br \/>\n\u663e\u793a &#8216; \u63a5\u6536\u5230\u7684COMMAREA: &#8216; COMMAREA-DATA\u3002<\/p>\n<p>* \u5c06COMMAREA-DATA\u79fb\u52a8\u5230\u952e<br \/>\n\u5982\u679c EIBCALEN &gt; 0 \u5e76\u4e14 EIBCALEN &lt; 7 \u5219<br \/>\n\u5c06 COMMAREA-DATA \u79fb\u52a8\u5230 RT-KEY<br \/>\n\u5c06 COMMAREA-DATA \u79fb\u52a8\u5230 TEMP-KEY<br \/>\n\u7ed3\u675f\u5982\u679c\u3002<\/p>\n<p>* \u4f7f\u7528\u66f4\u65b0\u8bfb\u53d6\u6587\u4ef6\uff08\u8bfb\u53d6\u8bb0\u5f55\uff09<br \/>\n\u6267\u884c CICS \u8bfb\u53d6\u6587\u4ef6(FILE-NAME)<br \/>\n\u5230(TEMP-SEG)<br \/>\nRIDFLD(TEMP-KEY)<br \/>\n\u957f\u5ea6(TEMP-SEG\u7684\u957f\u5ea6)<br \/>\n\u66f4\u65b0<br \/>\nRESP(Z-EIBRESP)<br \/>\nRESP2(Z-EIBRESP2)<br \/>\n\u7ed3\u675f\u6267\u884c\u3002<\/p>\n<p>\u5982\u679c Z-EIBRESP \u4e0d\u7b49\u4e8e DFHRESP(NORMAL) \u5219<br \/>\n\u663e\u793a &#8216;***** \u8bfb\u53d6\u6587\u4ef6\u9519\u8bef!&#8217;<br \/>\n\u663e\u793a &#8216;RESP: &#8216; Z-EIBRESP<br \/>\n\u663e\u793a &#8216;RESP2: &#8216; Z-EIBRESP2<br \/>\n\u5982\u679c Z-EIBRESP \u7b49\u4e8e DFHRESP(NOTFND) \u5219<br \/>\n\u663e\u793a &#8216;\u672a\u627e\u5230!&#8217;<br \/>\n\u7ed3\u675f\u5982\u679c<br \/>\n\u6267\u884c CICS \u5f02\u5e38\u7ed3\u675f ABCODE(&#8216;TTTT&#8217;) \u7ed3\u675f\u6267\u884c<br \/>\n\u6267\u884c CICS \u8fd4\u56de \u7ed3\u675f\u6267\u884c<br \/>\n\u5426\u5219<br \/>\n\u663e\u793a &#8216;\u8bfb\u53d6\u6587\u4ef6\u6210\u529f&#8217;<br \/>\n\u7ed3\u675f\u5982\u679c\u3002<\/p>\n<p>* \u663e\u793a\u6570\u636e<br \/>\n\u663e\u793a &#8216;\u4e4b\u524d\u7684\u6570\u636e*****&#8217;\u3002<br \/>\n* \u663e\u793a &#8216;\u603b\u957f\u5ea6: &#8216; RT-SEG\u7684\u957f\u5ea6\u3002<br \/>\n* \u663e\u793a &#8216;RT-PACKED\u957f\u5ea6: &#8216; RT-PACKED\u7684\u957f\u5ea6\u3002<br \/>\n* \u663e\u793a &#8216;RT-BINHALF\u957f\u5ea6: &#8216; RT-BINHALF\u7684\u957f\u5ea6\u3002<br \/>\n* \u663e\u793a &#8216;RT-BINFULL\u957f\u5ea6: &#8216; RT-BINFULL\u7684\u957f\u5ea6\u3002<br \/>\n* \u663e\u793a &#8216;RT-BINDBLE\u957f\u5ea6: &#8216; RT-BINDBLE\u7684\u957f\u5ea6\u3002<br \/>\n\u663e\u793a TEMP-SEG\u3002<br \/>\n\u663e\u793a &#8216;*****&#8217;\u3002<\/p>\n<p>* \u5c06\u5f53\u524d\u65f6\u95f4\u8bbe\u7f6e\u4e3a\u65b0\u8bb0\u5f55<br \/>\n\u4e32\u63a5 CURRENT-HOUR, &#8216;:&#8217;<br \/>\nCURRENT-MINUTE, &#8216;:&#8217;,<br \/>\nCURRENT-SECOND, &#8216;.&#8217;<br \/>\nCURRENT-HNDSEC(1:1)<br \/>\n\u4ee5\u5927\u5c0f\u4e3a\u5206\u9694\u7b26\u5b58\u5165 CURRENT-TIME-STR\u3002<br \/>\n\u5c06 CURRENT-TIME-STR \u79fb\u52a8\u5230 RT-ALPHA\u3002<\/p>\n<p>* \u91cd\u5199\u6587\u4ef6\uff08\u66f4\u65b0\u8bb0\u5f55\uff09<br \/>\n\u6267\u884c CICS \u91cd\u5199\u6587\u4ef6(FILE-NAME)<br \/>\n\u4ece(RT-SEG)<br \/>\n\u957f\u5ea6(RT-SEG\u7684\u957f\u5ea6)<br \/>\nRESP(Z-EIBRESP)<br \/>\nRESP2(Z-EIBRESP2)<br \/>\n\u7ed3\u675f\u6267\u884c\u3002<\/p>\n<p>\u5982\u679c Z-EIBRESP \u4e0d\u7b49\u4e8e DFHRESP(NORMAL) \u5219<br \/>\n\u663e\u793a &#8216;***** \u91cd\u5199\u6587\u4ef6\u9519\u8bef!&#8217;<br \/>\n\u663e\u793a &#8216;RESP: &#8216; Z-EIBRESP<br \/>\n\u663e\u793a &#8216;RESP2: &#8216; Z-EIBRESP2<br \/>\n\u6267\u884c CICS \u5f02\u5e38\u7ed3\u675f ABCODE(&#8216;TTTT&#8217;) \u7ed3\u675f\u6267\u884c<br \/>\n\u6267\u884c CICS \u8fd4\u56de \u7ed3\u675f\u6267\u884c<br \/>\n\u5426\u5219<br \/>\n\u663e\u793a &#8216;\u91cd\u5199\u6587\u4ef6\u6210\u529f&#8217;<br \/>\n\u7ed3\u675f\u5982\u679c\u3002<\/p>\n<p>* \u663e\u793a\u6570\u636e<br \/>\n\u663e\u793a &#8216;\u4e4b\u540e\u7684\u6570\u636e*****&#8217;\u3002<br \/>\n* \u663e\u793a &#8216;\u603b\u957f\u5ea6: &#8216; RT-SEG\u7684\u957f\u5ea6\u3002<br \/>\n* \u663e\u793a &#8216;RT-PACKED\u957f\u5ea6: &#8216; RT-PACKED\u7684\u957f\u5ea6\u3002<br \/>\n* \u663e\u793a &#8216;RT-BINHALF\u957f\u5ea6: &#8216; RT-BINHALF\u7684\u957f\u5ea6\u3002<br \/>\n* \u663e\u793a &#8216;RT-BINFULL\u957f\u5ea6: &#8216; RT-BINFULL\u7684\u957f\u5ea6\u3002<br \/>\n* \u663e\u793a &#8216;RT-BINDBLE\u957f\u5ea6: &#8216; RT-BINDBLE\u7684\u957f\u5ea6\u3002<br \/>\n\u663e\u793a RT-SEG\u3002<br \/>\n\u663e\u793a &#8216;*****&#8217;\u3002<\/p>\n<p>* \u5ef6\u8fdf<br \/>\n\u6267\u884c CICS \u5ef6\u8fdf \u79d2\u6570(1) \u7ed3\u675f\u6267\u884c\u3002<br \/>\n* \u7ed3\u675f<br \/>\n\u663e\u793a &#8216;TGFUPDT \u7ed3\u675f&#8212;&#8212;&#8212;&#8212;&#8212;&#8216;\u3002<br \/>\n\u6267\u884c CICS \u8fd4\u56de \u7ed3\u675f\u6267\u884c\u3002<\/p>\n<\/details>\n<h3>\u5220\u9664\u8bb0\u5f55\u7528<\/h3>\n<p>\u5f53\u4f7f\u7528\u6307\u5b9a\u7684\u952e\u503c\uff086\u5b57\u8282\uff09\u8c03\u7528COMMAREA\u65f6\uff0c\u5c06\u5220\u9664\u5177\u6709\u6307\u5b9a\u952e\u503c\u7684\u8bb0\u5f55\u3002<br \/>\n\u6267\u884c\u793a\u4f8b\uff1aCECI LINK PROGRAM(TGFDEL) COMMAREA(000005)<\/p>\n<details>TGFDEL<br \/>\nIDENTIFICATION DIVISION.<br \/>\nPROGRAM-ID. TGFDEL.<br \/>\nDATA DIVISION.<br \/>\nWORKING-STORAGE SECTION.<br \/>\n01 RESP1 PIC S9(08) COMP VALUE 0.01 Z-EIBFN PIC X(15) VALUE &#8216; &#8216;.<br \/>\n01 Z-EIBRESP PIC 9(4) VALUE ZERO.<br \/>\n01 Z-EIBRESP2 PIC 9(4) VALUE ZERO.<\/p>\n<p>01 CURRENT-DATE.<br \/>\n03 CURRENT-YEAR PIC 9(2).<br \/>\n03 CURRENT-MONTH PIC 9(2).<br \/>\n03 CURRENT-DAY PIC 9(2).<br \/>\n01 CURRENT-TIME.<br \/>\n03 CURRENT-HOUR PIC 9(2).<br \/>\n03 CURRENT-MINUTE PIC 9(2).<br \/>\n03 CURRENT-SECOND PIC 9(2).<br \/>\n03 CURRENT-HNDSEC PIC 9(2).<\/p>\n<p>01 WS-RAWTIME PIC S9(15) COMP-3.<br \/>\n01 CURRENT-DATE-CICS PIC X(8).<br \/>\n01 CURRENT-TIME-CICS PIC X(8).<\/p>\n<p>01 TSQ-NAME PIC X(8) VALUE &#8216;TSQTESTQ&#8217;.<br \/>\n01 FILE-NAME PIC X(8) VALUE &#8216;FILET&#8217;.<\/p>\n<p>01 RT-SEG.<br \/>\n02 RT-KEY PIC X(06) VALUE &#8216;000001&#8217;.<br \/>\n02 RT-ALPHA PIC X(10) VALUE &#8216;ThisIsROOT&#8217;.<br \/>\n02 RT-ALPHAKANA PIC X(10) VALUE &#8216;\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a&#8217;.<br \/>\n02 RT-MIXDBCS PIC X(32)<br \/>\nVALUE &#8216;\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587&#8217;.<br \/>\n02 RT-MIXALL PIC X(40)<br \/>\nVALUE &#8216;ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78&#8217;.<br \/>\n02 RT-GRAPHIC PIC G(15) USAGE DISPLAY-1<br \/>\nVALUE G&#8217;\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa&#8217;.<br \/>\n02 RT-DECIMAL PIC 9(10) VALUE 1234567890.<br \/>\n02 RT-PACKED PIC S9(05) COMP-3 VALUE 12345.<br \/>\n02 RT-BINHALF PIC S9(04) COMP VALUE 1234.<br \/>\n02 RT-BINFULL PIC S9(08) COMP VALUE 12345678.<br \/>\n02 RT-BINDBLE PIC S9(12) COMP VALUE 123456789012.<br \/>\n02 RT-GROUP.<br \/>\n03 RT-GRP01 PIC X(10) VALUE &#8216;ThisIs1st!&#8217;.<br \/>\n03 RT-GRP02 PIC X(10) VALUE &#8216;ThisIs2nd!&#8217;.<br \/>\n03 RT-GRP03 PIC X(10) VALUE &#8216;ThisIs3rd!&#8217;.<br \/>\n02 FILLER PIC X(15) VALUE SPACE.<\/p>\n<p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nLINKAGE SECTION.<br \/>\n01 DFHCOMMAREA.<br \/>\n03 COMMAREA-DATA PIC X(6).<br \/>\n*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nPROCEDURE DIVISION.<br \/>\nDISPLAY &#8216;TGFDEL Start&#8212;&#8212;&#8212;&#8212;-&#8216;<br \/>\n* Get Timestamp from ACCEPT<br \/>\nACCEPT CURRENT-DATE FROM DATE.<br \/>\nACCEPT CURRENT-TIME FROM TIME.<br \/>\nDISPLAY &#8216;ACCEPT DATE = &#8216; CURRENT-MONTH &#8216;\/&#8217; CURRENT-DAY &#8216;\/&#8217; CURRENT-YEAR &#8216; (mm\/dd\/yy)&#8217;.<br \/>\nDISPLAY &#8216;TIME = &#8216; CURRENT-HOUR &#8216;:&#8217; CURRENT-MINUTE &#8216;:&#8217; CURRENT-SECOND &#8216;.&#8217; CURRENT-HNDSEC<\/p>\n<p>* Display COMMAREA<br \/>\nDISPLAY &#8216;Received COMMAREA: &#8216; COMMAREA-DATA.<\/p>\n<p>* Move COMMAREA-DATA to Key<br \/>\nIF EIBCALEN &gt; 0 AND EIBCALEN &lt; 7 THEN<br \/>\nMOVE COMMAREA-DATA TO RT-KEY<br \/>\nEND-IF.<\/p>\n<p>* DELETE FILE<br \/>\nEXEC CICS DELETE FILE(FILE-NAME)<br \/>\nRIDFLD(RT-KEY)<br \/>\nRESP(Z-EIBRESP)<br \/>\nRESP2(Z-EIBRESP2)<br \/>\nEND-EXEC.<\/p>\n<p>IF Z-EIBRESP NOT = DFHRESP(NORMAL) THEN<br \/>\nDISPLAY &#8216;DELETE FILE ERROR!&#8217;<br \/>\nDISPLAY &#8216;RESP: &#8216; Z-EIBRESP<br \/>\nDISPLAY &#8216;RESP2: &#8216; Z-EIBRESP2<br \/>\nIF Z-EIBRESP = DFHRESP(NOTFND) THEN<br \/>\nDISPLAY &#8216;NOT FOUND!&#8217;<br \/>\nEND-IF<br \/>\nEXEC CICS ABEND ABCODE(&#8216;TTTT&#8217;) END-EXEC<br \/>\nEXEC CICS RETURN END-EXEC<br \/>\nELSE<br \/>\nDISPLAY &#8216;DELETE FILE OK&#8217;<br \/>\nEND-IF.<\/p>\n<p>* Display Data<br \/>\n* DISPLAY &#8216;*****&#8217;.<br \/>\n* DISPLAY &#8216;LENGTH Total: &#8216; LENGTH OF RT-SEG.<br \/>\n* DISPLAY &#8216;LENGTH RT-PACKED: &#8216; LENGTH OF RT-PACKED.<br \/>\n* DISPLAY &#8216;LENGTH RT-BINHALF: &#8216; LENGTH OF RT-BINHALF.<br \/>\n* DISPLAY &#8216;LENGTH RT-BINFULL: &#8216; LENGTH OF RT-BINFULL.<br \/>\n* DISPLAY &#8216;LENGTH RT-BINDBLE: &#8216; LENGTH OF RT-BINDBLE.<br \/>\n* DISPLAY RT-SEG.<br \/>\n* DISPLAY &#8216;*****&#8217;.<\/p>\n<p>* Delay<br \/>\nEXEC CICS DELAY FOR SECONDS(1) END-EXEC.<br \/>\n* End<br \/>\nDISPLAY &#8216;TGFDEL End&#8212;&#8212;&#8212;&#8212;&#8212;&#8216;.<br \/>\nEXEC CICS RETURN END-EXEC.<\/p>\n<\/details>\n<h3>\u4ec5\u9700\u4e00\u79cd\u9009\u9879\uff0c\u8bf7\u5c06\u4ee5\u4e0b\u5185\u5bb9\u7528\u4e2d\u6587\u8fdb\u884c\u672c\u5730\u5316\uff1a<\/h3>\n<p>\u7528\u4e8e\u53c2\u8003\u7684\u8bb0\u5f55\uff081\u4e2a\u8bb0\u5f55\uff09<\/p>\n<p>\u5f53\u4f7f\u7528\u6307\u5b9a\u7684\u952e\u503c\uff086\u4e2a\u5b57\u8282\uff09\u8c03\u7528COMMAREA\u65f6\uff0c\u5c06\u8bfb\u53d6\u5177\u6709\u6307\u5b9a\u952e\u503c\u7684\u8bb0\u5f55\uff081\u4e2a\u8bb0\u5f55\uff09\uff0c\u5e76\u5728DISPLAY\u8bed\u53e5\u4e2d\u8f93\u51fa\u5185\u5bb9\uff08\u901a\u8fc7JOBLOG\u7684CEEMSG\u786e\u8ba4\uff09\u3002<br \/>\n\u6267\u884c\u793a\u4f8b\uff1aCECI LINK PROGRAM\uff08TGFREAD\uff09COMMAREA\uff08000001\uff09<\/p>\n<details>TGFREAD<br \/>\nIDENTIFICATION DIVISION.<br \/>\nPROGRAM-ID. TGFREAD.<br \/>\nDATA DIVISION.<br \/>\nWORKING-STORAGE SECTION.<br \/>\n01 RESP1 PIC S9(08) COMP VALUE 0.<br \/>\n01 Z-EIBFN PIC X(15) VALUE &#8216; &#8216;.<br \/>\n01 Z-EIBRESP PIC 9(4) VALUE ZERO.<br \/>\n01 Z-EIBRESP2 PIC 9(4) VALUE ZERO.<br \/>\n01 CURRENT-DATE.<br \/>\n03 CURRENT-YEAR PIC 9(2).<br \/>\n03 CURRENT-MONTH PIC 9(2).<br \/>\n03 CURRENT-DAY PIC 9(2).<br \/>\n01 CURRENT-TIME.<br \/>\n03 CURRENT-HOUR PIC 9(2).<br \/>\n03 CURRENT-MINUTE PIC 9(2).<br \/>\n03 CURRENT-SECOND PIC 9(2).<br \/>\n03 CURRENT-HNDSEC PIC 9(2).<br \/>\n01 WS-RAWTIME PIC S9(15) COMP-3.<br \/>\n01 CURRENT-DATE-CICS PIC X(8).<br \/>\n01 CURRENT-TIME-CICS PIC X(8).<br \/>\n01 TSQ-NAME PIC X(8) VALUE &#8216;TSQTESTQ&#8217;.<br \/>\n01 FILE-NAME PIC X(8) VALUE &#8216;FILET&#8217;.<br \/>\n01 RT-SEG.<br \/>\n02 RT-KEY PIC X(06) VALUE &#8216;000001&#8217;.<br \/>\n02 RT-ALPHA PIC X(10) VALUE &#8216;ThisIsROOT&#8217;.<br \/>\n02 RT-ALPHAKANA PIC X(10) VALUE &#8216;\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a&#8217;.<br \/>\n02 RT-MIXDBCS PIC X(32) VALUE &#8216;\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587&#8217;.<br \/>\n02 RT-MIXALL PIC X(40) VALUE &#8216;ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78&#8217;.<br \/>\n02 RT-GRAPHIC PIC G(15) USAGE DISPLAY-1 VALUE G&#8217;\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa&#8217;.<br \/>\n02 RT-DECIMAL PIC 9(10) VALUE 1234567890.<br \/>\n02 RT-PACKED PIC S9(05) COMP-3 VALUE 12345.<br \/>\n02 RT-BINHALF PIC S9(04) COMP VALUE 1234.<br \/>\n02 RT-BINFULL PIC S9(08) COMP VALUE 12345678.<br \/>\n02 RT-BINDBLE PIC S9(12) COMP VALUE 123456789012.<br \/>\n02 RT-GROUP.<br \/>\n03 RT-GRP01 PIC X(10) VALUE &#8216;ThisIs1st!&#8217;.<br \/>\n03 RT-GRP02 PIC X(10) VALUE &#8216;ThisIs2nd!&#8217;.<br \/>\n03 RT-GRP03 PIC X(10) VALUE &#8216;ThisIs3rd!&#8217;.<br \/>\n02 FILLER PIC X(15) VALUE SPACE.<br \/>\n01 TEMP-SEG.<br \/>\n02 TEMP-KEY PIC X(06).<br \/>\n02 TEMP-ALPHA PIC X(10).<br \/>\n02 TEMP-ALPHAKANA PIC X(10).<br \/>\n02 TEMP-MIXDBCS PIC X(32).<br \/>\n02 TEMP-MIXALL PIC X(40).<br \/>\n02 TEMP-GRAPHIC PIC G(15) USAGE DISPLAY-1.<br \/>\n02 TEMP-DECIMAL PIC 9(10).<br \/>\n02 TEMP-PACKED PIC S9(05) COMP-3.<br \/>\n02 TEMP-BINHALF PIC S9(04) COMP.<br \/>\n02 TEMP-BINFULL PIC S9(08) COMP.<br \/>\n02 TEMP-BINDBLE PIC S9(12) COMP.<br \/>\n02 TEMP-GROUP.<br \/>\n03 TEMP-GRP01 PIC X(10).<br \/>\n03 TEMP-GRP02 PIC X(10).<br \/>\n03 TEMP-GRP03 PIC X(10).<br \/>\n02 FILLER PIC X(15).<br \/>\n*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nLINKAGE SECTION.<br \/>\n01 DFHCOMMAREA.<br \/>\n03 COMMAREA-DATA PIC X(6).<br \/>\n*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nPROCEDURE DIVISION.<br \/>\nDISPLAY &#8216;TGFREAD Start&#8212;&#8212;&#8212;&#8212;-&#8216;<br \/>\n* Get Timestamp from ACCEPT<br \/>\nACCEPT CURRENT-DATE FROM DATE.<br \/>\nACCEPT CURRENT-TIME FROM TIME.<br \/>\nDISPLAY &#8216;ACCEPT DATE = &#8216; CURRENT-MONTH &#8216;\/&#8217; CURRENT-DAY &#8216;\/&#8217; CURRENT-YEAR &#8216; (mm\/dd\/yy)&#8217;.<br \/>\nDISPLAY &#8216;TIME = &#8216; CURRENT-HOUR &#8216;:&#8217; CURRENT-MINUTE &#8216;:&#8217; CURRENT-SECOND &#8216;.&#8217; CURRENT-HNDSEC<br \/>\n* Display COMMAREA<br \/>\nDISPLAY &#8216;Received COMMAREA: &#8216; COMMAREA-DATA.<br \/>\n* Move COMMAREA-DATA to Key<br \/>\nIF EIBCALEN &gt; 0 AND EIBCALEN &lt; 7 THEN<br \/>\nMOVE COMMAREA-DATA TO TEMP-KEY<br \/>\nEND-IF.<br \/>\n* READ FILE (Read Record)<br \/>\nEXEC CICS READ FILE(FILE-NAME)<br \/>\nINTO(TEMP-SEG)<br \/>\nRIDFLD(TEMP-KEY)<br \/>\nLENGTH(LENGTH OF TEMP-SEG)<br \/>\nRESP(Z-EIBRESP)<br \/>\nRESP2(Z-EIBRESP2)<br \/>\nEND-EXEC.<br \/>\nIF Z-EIBRESP NOT = DFHRESP(NORMAL) THEN<br \/>\nDISPLAY &#8216;***** READ FILE ERROR!&#8217;<br \/>\nDISPLAY &#8216;RESP: &#8216; Z-EIBRESP<br \/>\nDISPLAY &#8216;RESP2: &#8216; Z-EIBRESP2<br \/>\nIF Z-EIBRESP = DFHRESP(NOTFND) THEN<br \/>\nDISPLAY &#8216;NOT FOUND!&#8217;<br \/>\nEND-IF<br \/>\nEXEC CICS ABEND ABCODE(&#8216;TTTT&#8217;) END-EXEC<br \/>\nEXEC CICS RETURN END-EXEC<br \/>\nELSE<br \/>\nDISPLAY &#8216;READ FILE OK&#8217;<br \/>\nEND-IF.<br \/>\n* Display Data<br \/>\nDISPLAY &#8216;*****&#8217;.<br \/>\nDISPLAY TEMP-SEG.<br \/>\nDISPLAY &#8216;*****&#8217;.<br \/>\n* Delay<br \/>\nEXEC CICS DELAY FOR SECONDS(1) END-EXEC.<br \/>\n* End<br \/>\nDISPLAY &#8216;TGFREAD End&#8212;&#8212;&#8212;&#8212;&#8212;&#8216;.<br \/>\nEXEC CICS RETURN END-EXEC.<\/details>\n<h3>\u7528\u4e8e\u53c2\u8003\u7684\u8bb0\u5f55\uff08\u591a\u4e2a\u8bb0\u5f55\uff09<\/h3>\n<p>\u5728\u6307\u5b9aCOMMAREA\u7684\u952e\u503c(6\u5b57\u8282)\u5e76\u8c03\u7528\u65f6\uff0c\u5c06\u8bfb\u53d6\u6307\u5b9a\u952e\u503c\u4ee5\u540e\u7684\u8bb0\u5f55\uff0c\u5e76\u4f7f\u7528DISPLAY\u8bed\u53e5\u8f93\u51fa\u5185\u5bb9\uff08\u901a\u8fc7JOBLOG\u7684CEEMSG\u8fdb\u884c\u786e\u8ba4\uff09\u3002<br \/>\n\u4f8b\u5b50\uff1aCECI LINK PROGRAM(TGFREAD) COMMAREA(000001)\u3002<\/p>\n<details>\u30bd\u30fc\u30b9\uff1aTGFLISTTGFLIST<br \/>\nID\u90e8\u3002<br \/>\n\u30d7\u30ed\u30b0\u30e9\u30e0\u540d\uff1aTGFLIST\u3002<br \/>\n\u30c7\u30fc\u30bf\u90e8\u3002<br \/>\n\u30ef\u30fc\u30ad\u30f3\u30b0\u30b9\u30c8\u30ec\u30fc\u30b8\u90e8\u3002<br \/>\n01 RESP1 PIC S9(08) COMP VALUE 0\u3002<\/p>\n<p>01 Z-EIBFN PIC X(15) VALUE &#8216; &#8216;\u3002<br \/>\n01 Z-EIBRESP PIC 9(4) VALUE ZERO\u3002<br \/>\n01 Z-EIBRESP2 PIC 9(4) VALUE ZERO\u3002<\/p>\n<p>01 CURRENT-DATE\u3002<br \/>\n03 CURRENT-YEAR PIC 9(2)\u3002<br \/>\n03 CURRENT-MONTH PIC 9(2)\u3002<br \/>\n03 CURRENT-DAY PIC 9(2)\u3002<br \/>\n01 CURRENT-TIME\u3002<br \/>\n03 CURRENT-HOUR PIC 9(2)\u3002<br \/>\n03 CURRENT-MINUTE PIC 9(2)\u3002<br \/>\n03 CURRENT-SECOND PIC 9(2)\u3002<br \/>\n03 CURRENT-HNDSEC PIC 9(2)\u3002<\/p>\n<p>01 WS-RAWTIME PIC S9(15) COMP-3\u3002<br \/>\n01 CURRENT-DATE-CICS PIC X(8)\u3002<br \/>\n01 CURRENT-TIME-CICS PIC X(8)\u3002<\/p>\n<p>01 TSQ-NAME PIC X(8) VALUE &#8216;TSQTESTQ&#8217;\u3002<br \/>\n01 FILE-NAME PIC X(8) VALUE &#8216;FILET&#8217;\u3002<\/p>\n<p>01 RT-SEG\u3002<br \/>\n02 RT-KEY PIC X(06) VALUE &#8216;000001&#8217;\u3002<br \/>\n02 RT-ALPHA PIC X(10) VALUE &#8216;ThisIsROOT&#8217;\u3002<br \/>\n02 RT-ALPHAKANA PIC X(10) VALUE &#8216;\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a&#8217;\u3002<br \/>\n02 RT-MIXDBCS PIC X(32)<br \/>\nVALUE &#8216;\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587&#8217;\u3002<br \/>\n02 RT-MIXALL PIC X(40)<br \/>\nVALUE &#8216;ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78&#8217;\u3002<br \/>\n02 RT-GRAPHIC PIC G(15) USAGE DISPLAY-1<br \/>\nVALUE G&#8217;\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa&#8217;\u3002<br \/>\n02 RT-DECIMAL PIC 9(10) VALUE 1234567890\u3002<br \/>\n02 RT-PACKED PIC S9(05) COMP-3 VALUE 12345\u3002<br \/>\n02 RT-BINHALF PIC S9(04) COMP VALUE 1234\u3002<br \/>\n02 RT-BINFULL PIC S9(08) COMP VALUE 12345678\u3002<br \/>\n02 RT-BINDBLE PIC S9(12) COMP VALUE 123456789012\u3002<br \/>\n02 RT-GROUP\u3002<br \/>\n03 RT-GRP01 PIC X(10) VALUE &#8216;ThisIs1st!&#8217;\u3002<br \/>\n03 RT-GRP02 PIC X(10) VALUE &#8216;ThisIs2nd!&#8217;\u3002<br \/>\n03 RT-GRP03 PIC X(10) VALUE &#8216;ThisIs3rd!&#8217;\u3002<br \/>\n02 FILLER PIC X(15) VALUE SPACE\u3002<\/p>\n<p>01 TEMP-SEG\u3002<br \/>\n02 TEMP-KEY PIC X(06)\u3002<br \/>\n02 TEMP-ALPHA PIC X(10)\u3002<br \/>\n02 TEMP-ALPHAKANA PIC X(10)\u3002<br \/>\n02 TEMP-MIXDBCS PIC X(32)\u3002<br \/>\n02 TEMP-MIXALL PIC X(40)\u3002<br \/>\n02 TEMP-GRAPHIC PIC G(15) USAGE DISPLAY-1\u3002<br \/>\n02 TEMP-DECIMAL PIC 9(10)\u3002<br \/>\n02 TEMP-PACKED PIC S9(05) COMP-3\u3002<br \/>\n02 TEMP-BINHALF PIC S9(04) COMP\u3002<br \/>\n02 TEMP-BINFULL PIC S9(08) COMP\u3002<br \/>\n02 TEMP-BINDBLE PIC S9(12) COMP\u3002<br \/>\n02 TEMP-GROUP\u3002<br \/>\n03 TEMP-GRP01 PIC X(10)\u3002<br \/>\n03 TEMP-GRP02 PIC X(10)\u3002<br \/>\n03 TEMP-GRP03 PIC X(10)\u3002<br \/>\n02 FILLER PIC X(15)\u3002<\/p>\n<p>01 SRCH-KEY PIC X(10)\u3002<br \/>\n01 LINE-CNT PIC S9(4) COMP VALUE +0\u3002<br \/>\n*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\u30ea\u30f3\u30b1\u30fc\u30b8\u90e8\u3002<br \/>\n01 DFHCOMMAREA\u3002<br \/>\n03 COMMAREA-DATA PIC X(6)\u3002<br \/>\n*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\u624b\u9806\u90e8\u3002<br \/>\nDISPLAY &#8216;TGFLIST \u958b\u59cb&#8212;&#8212;&#8212;&#8212;-&#8216;<br \/>\n* \u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092ACCEPT\u3067\u53d6\u5f97<br \/>\nACCEPT CURRENT-DATE FROM DATE\u3002<br \/>\nACCEPT CURRENT-TIME FROM TIME\u3002<br \/>\nDISPLAY &#8216;ACCEPT DATE = &#8216; CURRENT-MONTH &#8216;\/&#8217;<br \/>\nCURRENT-DAY &#8216;\/&#8217; CURRENT-YEAR &#8216; (mm\/dd\/yy)&#8217;\u3002<br \/>\nDISPLAY &#8216; TIME = &#8216; CURRENT-HOUR &#8216;:&#8217;<br \/>\nCURRENT-MINUTE &#8216;:&#8217; CURRENT-SECOND &#8216;.&#8217; CURRENT-HNDSEC<\/p>\n<p>* COMMAREA\u3092\u8868\u793a<br \/>\nDISPLAY &#8216; \u53d7\u4fe1\u3057\u305fCOMMAREA\uff1a&#8217; COMMAREA-DATA\u3002<\/p>\n<p>* COMMAREA-DATA\u3092\u30ad\u30fc\u306b\u79fb\u52d5<br \/>\nIF EIBCALEN &gt; 0 AND EIBCALEN &lt; 7 THEN<br \/>\nMOVE COMMAREA-DATA TO SRCH-KEY<br \/>\nEND-IF\u3002<\/p>\n<p>* \u3059\u3079\u3066\u306e\u30ec\u30b3\u30fc\u30c9\u3092\u8aad\u307f\u53d6\u308b<br \/>\nSRCH-RESUME\u3002<br \/>\nEXEC CICS STARTBR FILE(FILE-NAME)<br \/>\nRIDFLD(SRCH-KEY) GTEQ<br \/>\nRESP(Z-EIBRESP)<br \/>\nRESP2(Z-EIBRESP2)<br \/>\nEND-EXEC\u3002<\/p>\n<p>IF Z-EIBRESP NOT = DFHRESP(NORMAL) THEN<br \/>\nDISPLAY &#8216;***** STARTBR FILE\u30a8\u30e9\u30fc\uff01&#8217;<br \/>\nDISPLAY &#8216;RESP: &#8216; Z-EIBRESP<br \/>\nDISPLAY &#8216;RESP2: &#8216; Z-EIBRESP2<br \/>\nIF Z-EIBRESP = DFHRESP(NOTFND) THEN<br \/>\nDISPLAY &#8216;\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff01&#8217;<br \/>\nEND-IF<br \/>\nEXEC CICS ABEND ABCODE(&#8216;TTTT&#8217;) END-EXEC<br \/>\nEXEC CICS RETURN END-EXEC<br \/>\nELSE<br \/>\nDISPLAY &#8216;STARTBR FILE OK&#8217;<br \/>\nEND-IF\u3002<\/p>\n<p>SRCH-LOOP\u3002<br \/>\nEXEC CICS READNEXT FILE(FILE-NAME)<br \/>\nINTO(TEMP-SEG)<br \/>\nRIDFLD(SRCH-KEY)<br \/>\nLENGTH(LENGTH OF TEMP-SEG)<br \/>\nRESP(Z-EIBRESP)<br \/>\nRESP2(Z-EIBRESP2)<br \/>\nEND-EXEC\u3002<\/p>\n<p>IF Z-EIBRESP = DFHRESP(ENDFILE) THEN<br \/>\nDISPLAY &#8216;*****&#8217;<br \/>\nGO TO SRCH-DONE<br \/>\nEND-IF\u3002<\/p>\n<p>IF Z-EIBRESP NOT = DFHRESP(NORMAL) THEN<br \/>\nDISPLAY &#8216;***** READNEXT FILE\u30a8\u30e9\u30fc\uff01&#8217;<br \/>\nDISPLAY &#8216;RESP: &#8216; Z-EIBRESP<br \/>\nDISPLAY &#8216;RESP2: &#8216; Z-EIBRESP2<br \/>\nIF Z-EIBRESP = DFHRESP(NOTFND) THEN<br \/>\nDISPLAY &#8216;\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff01&#8217;<br \/>\nEND-IF<br \/>\nEXEC CICS ABEND ABCODE(&#8216;TTTT&#8217;) END-EXEC<br \/>\nEXEC CICS RETURN END-EXEC<br \/>\nELSE<br \/>\nADD 1 TO LINE-CNT<br \/>\nDISPLAY LINE-CNT &#8216; : *****&#8217;<br \/>\nDISPLAY TEMP-SEG<br \/>\nGO TO SRCH-LOOP<br \/>\nEND-IF\u3002<\/p>\n<p>SRCH-DONE\u3002<br \/>\nEXEC CICS ENDBR FILE(FILE-NAME) END-EXEC\u3002<\/p>\n<p>* \u9045\u5ef6<br \/>\nEXEC CICS DELAY FOR SECONDS(1) END-EXEC\u3002<br \/>\n* \u7d42\u4e86<br \/>\nDISPLAY &#8216;TGFLIST \u7d42\u4e86&#8212;&#8212;&#8212;&#8212;&#8212;&#8216;\u3002<br \/>\nEXEC CICS RETURN END-EXEC\u3002<\/p>\n<\/details>\n<h3>\u53c2\u8003\uff1a\u7528\u4e8e\u7f16\u8bd1\u7684JCL\u793a\u4f8b<\/h3>\n<details>\u30b3\u30f3\u30d1\u30a4\u30eb\u7528\u306eJCL\u30b5\u30f3\u30d7\u30eb\u3067\u3059\u3002\u30b3\u30f3\u30d1\u30a4\u30eb\u7528\u306eJCL\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u3042\u308a\u3001@ProgName@\u306f\u30bd\u30fc\u30b9\u306e\u30e1\u30f3\u30d0\u30fc\u540d\u306b\u7f6e\u304d\u63db\u3048\u3089\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002CICS TS V5.6\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u540d\u306a\u3069\u306f\u9069\u5207\u306b\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\/\/TRANCBL JOB MSGLEVEL=(1,1),CLASS=A,MSGCLASS=X,NOTIFY=&amp;SYSUID<br \/>\n\/\/DFHYITVL PROC SUFFIX=1$, \u7ffb\u8a33\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30b5\u30d5\u30a3\u30c3\u30af\u30b9<br \/>\n\/\/ INDEX=&#8217;CICSTS56.CICS&#8217;, CICS\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4fee\u98fe\u5b50<br \/>\n\/\/ PROGLIB=&#8217;CICSTS56.CICS.SDFHLOAD&#8217;, \u51fa\u529b\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u540d\u524d<br \/>\n\/\/ DSCTLIB=&#8217;CICSTS56.CICS.SDFHCOB&#8217;, \u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30de\u30af\u30ed\/\u30c7\u30fc\u30bf\u30bb\u30af\u30c8<br \/>\n\/\/ AD370HLQ=&#8217;LANG.IGY.V6R1M0&#8242;, AD\/Cycle\u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u4fee\u98fe\u5b50<br \/>\n\/\/ LE370HLQ=&#8217;CEE&#8217;, LE\/370\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4fee\u98fe\u5b50<br \/>\n\/\/ OUTC=*, \u5370\u5237\u51fa\u529b\u306e\u30af\u30e9\u30b9<br \/>\n\/\/ REG=0M, \u3059\u3079\u3066\u306e\u30b9\u30c6\u30c3\u30d7\u306e\u9818\u57df\u30b5\u30a4\u30ba<br \/>\n\/\/ TRNPARM=&#8217;COBOL3,SP,DBCS&#8217;,<br \/>\n\/\/ COBPARM=&#8217;NODYNAM,OBJECT,RENT,APOST,MAP,XREF,TRUNC(BIN)&#8217;,<br \/>\n\/\/ LNKPARM=&#8217;LIST,XREF,REUS=RENT&#8217;, \u30ea\u30f3\u30af\u7de8\u96c6\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc<br \/>\n\/\/ STUB=&#8217;DFHEILID&#8217;, DFHELII\u306eINC\u306e\u30ea\u30f3\u30af<br \/>\n\/\/ LIB=&#8217;SDFHSAMP&#8217;, \u30e9\u30a4\u30d6\u30e9\u30ea<br \/>\n\/\/ WORK=SYSDA \u30ef\u30fc\u30af\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u30e6\u30cb\u30c3\u30c8<br \/>\n\/\/*<br \/>\n\/\/* \u3053\u306e\u624b\u9806\u306fCOBOL\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u751f\u6210\u3057\u307e\u3059\u3002<br \/>\n\/\/*<br \/>\n\/\/* \u3053\u306e\u624b\u9806\u306b\u306f4\u3064\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059<br \/>\n\/\/* 1. COBOL\u7ffb\u8a33\u5668\u3092\u5b9f\u884c\u3057\u307e\u3059<br \/>\n\/\/* (\u6307\u5b9a\u3055\u308c\u305f\u30b5\u30d5\u30a3\u30c3\u30af\u30b91$\u3092\u4f7f\u7528)<br \/>\n\/\/* 2. COBOL\u30b3\u30f3\u30d1\u30a4\u30e9\u3092\u5b9f\u884c\u3057\u307e\u3059<br \/>\n\/\/* 3. \u30ea\u30f3\u30af\u7de8\u96c6\u30b9\u30c6\u30c3\u30d7\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b&amp;LIB(&amp;STUB)\u3092\u518d\u30d6\u30ed\u30c3\u30af\u3059\u308b<br \/>\n\/\/* 4. \u51fa\u529b\u3092\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8&amp;PROGLIB\u306b\u30ea\u30f3\u30af\u7de8\u96c6\u3057\u307e\u3059<br \/>\n\/\/*<br \/>\n\/\/* \u3053\u306e\u624b\u9806\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306eJCL\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059<br \/>\n\/\/*<br \/>\n\/\/* \/\/APPLPROG EXEC DFHYITVL<br \/>\n\/\/* \/\/TRN.SYSIN DD *<br \/>\n\/\/* .<br \/>\n\/\/* . \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d7\u30ed\u30b0\u30e9\u30e0<br \/>\n\/\/* .<br \/>\n\/\/* \/*<br \/>\n\/\/* \/\/LKED.SYSIN DD *<br \/>\n\/\/* NAME \u30d7\u30ed\u30b0\u30e9\u30e0\u540d(R)<br \/>\n\/\/* \/*<br \/>\n\/\/*<br \/>\n\/\/* \u3053\u3053\u3067\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u540d\u306f\u3042\u306a\u305f\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u540d\u524d\u3067\u3059\u3002<br \/>\n\/\/* (\u5171\u901a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3078\u306e\u547c\u3073\u51fa\u3057\u3092\u542b\u3080\u5834\u5408\u306a\u3069\u3001\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u30b7\u30b9\u30c6\u30e0\u5b9a\u7fa9\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002)<br \/>\n\/\/*<br \/>\n\/\/TRN EXEC PGM=DFHECP&amp;SUFFIX,<br \/>\n\/\/ PARM=&#8217;&amp;TRNPARM&#8217;, @01C<br \/>\n\/\/ REGION=&amp;REG<br \/>\n\/\/STEPLIB DD DSN=&amp;INDEX..SDFHLOAD,DISP=SHR<br \/>\n\/\/SYSPRINT DD SYSOUT=&amp;OUTC<br \/>\n\/\/SYSPUNCH DD DSN=&amp;&amp;SYSCIN,<br \/>\n\/\/ DISP=(,PASS),UNIT=&amp;WORK,<br \/>\n\/\/ DCB=BLKSIZE=400,<br \/>\n\/\/ SPACE=(400,(400,100))<br \/>\n\/\/*<br \/>\n\/\/COB EXEC PGM=IGYCRCTL,REGION=&amp;REG,PARM=&#8217;&amp;COBPARM&#8217;<br \/>\n\/\/STEPLIB DD DSN=&amp;AD370HLQ..SIGYCOMP,DISP=SHR<br \/>\n\/\/SYSLIB DD DSN=&amp;DSCTLIB,DISP=SHR<br \/>\n\/\/ DD DSN=&amp;INDEX..SDFHCOB,DISP=SHR<br \/>\n\/\/ DD DSN=&amp;INDEX..SDFHMAC,DISP=SHR<br \/>\n\/\/ DD DSN=&amp;INDEX..SDFHSAMP,DISP=SHR<br \/>\n\/\/* DD DSN=CICSTS56.@DBDC.DSCTLIB,DISP=SHR<br \/>\n\/\/SYSPRINT DD SYSOUT=&amp;OUTC<br \/>\n\/\/SYSIN DD DSN=&amp;&amp;SYSCIN,DISP=(OLD,DELETE)<br \/>\n\/\/SYSLIN DD DSN=&amp;&amp;LOADSET,DISP=(MOD,PASS),<br \/>\n\/\/ UNIT=&amp;WORK,SPACE=(80,(250,100))<br \/>\n\/\/SYSMDECK DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT1 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT2 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT3 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT4 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT5 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT6 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT7 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT8 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT9 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT10 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT11 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT12 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT13 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT14 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/SYSUT15 DD UNIT=&amp;WORK,SPACE=(460,(350,100))<br \/>\n\/\/*<br \/>\n\/\/COPYLINK EXEC PGM=IEBGENER,COND=(7,LT,COB)<br \/>\n\/\/SYSUT1 DD DSN=&amp;INDEX..&amp;LIB(&amp;STUB),DISP=SHR<br \/>\n\/\/SYSUT2 DD DSN=&amp;&amp;COPYLINK,DISP=(NEW,PASS),<br \/>\n\/\/ DCB=(LRECL=80,BLKSIZE=400,RECFM=FB),<br \/>\n\/\/ UNIT=&amp;WORK,SPACE=(400,(20,20))<br \/>\n\/\/SYSPRINT DD SYSOUT=&amp;OUTC<br \/>\n\/\/SYSIN DD DUMMY<br \/>\n\/\/*<br \/>\n\/\/LKED EXEC PGM=IEWL,REGION=&amp;REG,<br \/>\n\/\/ PARM=&#8217;&amp;LNKPARM&#8217;,COND=(5,LT,COB)<br \/>\n\/\/SYSLIB DD DSN=&amp;INDEX..SDFHLOAD,DISP=SHR<br \/>\n\/\/ DD DSN=&amp;LE370HLQ..SCEELKED,DISP=SHR<br \/>\n\/\/SYSLMOD DD DSN=&amp;PROGLIB,DISP=SHR<br \/>\n\/\/SYSUT1 DD UNIT=&amp;WORK,DCB=BLKSIZE=1024,<br \/>\n\/\/ SPACE=(1024,(200,20))<br \/>\n\/\/SYSPRINT DD SYSOUT=&amp;OUTC<br \/>\n\/\/SYSLIN DD DSN=&amp;&amp;COPYLINK,DISP=(OLD,DELETE)<br \/>\n\/\/ DD DSN=&amp;&amp;LOADSET,DISP=(OLD,DELETE)<br \/>\n\/\/ DD DDNAME=SYSIN<br \/>\n\/\/*<br \/>\n\/\/ PEND<br \/>\n\/\/*********************************************************************<br \/>\n\/\/* \u5b9f\u884c\u30a4\u30f3\u30b9\u30c8\u30ea\u30fc\u30e0\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3 *<br \/>\n\/\/*********************************************************************<br \/>\n\/\/@COBOL EXEC DFHYITVL<br \/>\n\/\/TRN.SYSIN DD DISP=SHR,DSN=CICSTS56.@DBDC.PGMSOR(@ProgName@)<br \/>\n\/\/LKED.SYSLMOD DD DISP=SHR,DSN=CICSTS56.@DBDC.USERLIB.PDSE<br \/>\n\/\/LKED.SYSIN DD *<br \/>\nMODE AMODE(31),RMODE(ANY)<br \/>\nNAME @ProgName@(R)<br \/>\n\/*<\/p>\n<\/details>\n<h2>CICS\u8d44\u6e90\u5b9a\u4e49<\/h2>\n<h3>\u6587\u4ef6\u5b9a\u7fa9<\/h3>\n<pre class=\"post-pre\"><code>CEDA  View File( FILET    )                                               \r\n File           : FILET                                                   \r\n Group          : TAGGRP                                                  \r\n DEScription    :                                                         \r\nVSAM PARAMETERS                                                           \r\n DSNAme         : DB2P.CT56B4A1.FILET                                     \r\n Password       :                    PASSWORD NOT SPECIFIED               \r\n RLsaccess      : No                 Yes | No                             \r\n LSRPOOLId      : 1                  1-8 | None                           \r\n LSRPOOLNum     : 001                1-255 | None                         \r\n READInteg      : Uncommitted        Uncommitted | Consistent | Repeatable\r\n DSNSharing     : Allreqs            Allreqs | Modifyreqs                 \r\n STRings        : 003                1-255                                \r\n Nsrgroup       :                                                         \r\nREMOTE ATTRIBUTES                                                         \r\n REMOTESystem   :                                                         \r\n REMOTEName     :                                                         \r\nREMOTE AND CFDATATABLE PARAMETERS           \r\n...                              \r\n<\/code><\/pre>\n<h3>PROGRAM\u7684\u5b9a\u4e49<\/h3>\n<pre class=\"post-pre\"><code>CEDA  View PROGram( TGFADD   )                                            \r\n PROGram        : TGFADD                                                  \r\n Group          : TAGGRP                                                  \r\n DEScription    :                                                         \r\n Language       :                    CObol | Assembler | Le370 | C | Pli  \r\n RELoad         : No                 No | Yes                             \r\n RESident       : No                 No | Yes                             \r\n USAge          : Normal             Normal | Transient                   \r\n USElpacopy     : No                 No | Yes                             \r\n Status         : Enabled            Enabled | Disabled                   \r\n RSl            : 00                 0-24 | Public                        \r\n CEdf           : Yes                Yes | No                             \r\n DAtalocation   : Any                Below | Any                          \r\n EXECKey        : User               User | Cics                          \r\n COncurrency    : Quasirent          Quasirent | Threadsafe | Required    \r\n Api            : Cicsapi            Cicsapi | Openapi                    \r\nREMOTE ATTRIBUTES                                                         \r\n DYnamic        : No                 No | Yes                             \r\n<\/code><\/pre>\n<p>\u540c\u6837\u5730\uff0c\u8fd8\u9700\u6dfb\u52a0\u6709\u5173TAGFUPDT\u3001TAGFDEL\u3001TAGFREAD\u548cTAGFLIST\u7684\u7a0b\u5e8f\u5b9a\u4e49\u3002<\/p>\n<h2>\u8fdb\u884c\u6d4b\u8bd5<\/h2>\n<p>\u5237\u65b0\u540e\uff0c\u786e\u8ba4\u4e00\u4e0b\u6700\u65b0\u8bdd\u9898\u7684\u72b6\u6001\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 ~\/Kafka]# \/opt\/confluent-6.2.0\/bin\/kafka-avro-console-consumer --from-beginning --topic cdc_kafka_test01.filet01.sourcedb.vsam.test01.filet --bootstrap-server localhost:9092 --property print.key=true\r\n{\"RT_KEY\":{\"string\":\"000001\"}}  {\"RT_KEY\":{\"string\":\"000001\"},\"RT_ALPHA\":{\"string\":\"ThisIsROOT\"},\"RT_ALPHAKANA\":{\"string\":\"\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\"},\"RT_MIXDBCS\":{\"string\":\"\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587  \"},\"RT_MIXALL\":{\"string\":\"ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\"},\"RT_GRAPHIC\":{\"string\":\"\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\"},\"RT_DECIMAL\":{\"string\":\"1234567890\"},\"RT_PACKED\":{\"int\":12345},\"RT_BINHALF\":{\"int\":1234},\"RT_BINFULL\":{\"int\":12345678},\"RT_BINDBLE\":{\"long\":123456789012},\"RT_GRP01\":{\"string\":\"ThisIs1st!\"},\"RT_GRP02\":{\"string\":\"ThisIs2nd!\"},\"RT_GRP03\":{\"string\":\"ThisIs3rd!\"}}\r\n{\"RT_KEY\":{\"string\":\"000002\"}}  {\"RT_KEY\":{\"string\":\"000002\"},\"RT_ALPHA\":{\"string\":\"11:11:54.3\"},\"RT_ALPHAKANA\":{\"string\":\"\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\"},\"RT_MIXDBCS\":{\"string\":\"\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587  \"},\"RT_MIXALL\":{\"string\":\"ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\"},\"RT_GRAPHIC\":{\"string\":\"\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\"},\"RT_DECIMAL\":{\"string\":\"1234567890\"},\"RT_PACKED\":{\"int\":12345},\"RT_BINHALF\":{\"int\":1234},\"RT_BINFULL\":{\"int\":12345678},\"RT_BINDBLE\":{\"long\":123456789012},\"RT_GRP01\":{\"string\":\"ThisIs1st!\"},\"RT_GRP02\":{\"string\":\"ThisIs2nd!\"},\"RT_GRP03\":{\"string\":\"ThisIs3rd!\"}}\r\n{\"RT_KEY\":{\"string\":\"000003\"}}  {\"RT_KEY\":{\"string\":\"000003\"},\"RT_ALPHA\":{\"string\":\"ThisIsROOT\"},\"RT_ALPHAKANA\":{\"string\":\"\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\"},\"RT_MIXDBCS\":{\"string\":\"\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587  \"},\"RT_MIXALL\":{\"string\":\"ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\"},\"RT_GRAPHIC\":{\"string\":\"\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\"},\"RT_DECIMAL\":{\"string\":\"1234567890\"},\"RT_PACKED\":{\"int\":12345},\"RT_BINHALF\":{\"int\":1234},\"RT_BINFULL\":{\"int\":12345678},\"RT_BINDBLE\":{\"long\":123456789012},\"RT_GRP01\":{\"string\":\"ThisIs1st!\"},\"RT_GRP02\":{\"string\":\"ThisIs2nd!\"},\"RT_GRP03\":{\"string\":\"ThisIs3rd!\"}}\r\n{\"RT_KEY\":{\"string\":\"000004\"}}  {\"RT_KEY\":{\"string\":\"000004\"},\"RT_ALPHA\":{\"string\":\"ThisIsROOT\"},\"RT_ALPHAKANA\":{\"string\":\"\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\"},\"RT_MIXDBCS\":{\"string\":\"\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587  \"},\"RT_MIXALL\":{\"string\":\"ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\"},\"RT_GRAPHIC\":{\"string\":\"\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\"},\"RT_DECIMAL\":{\"string\":\"1234567890\"},\"RT_PACKED\":{\"int\":12345},\"RT_BINHALF\":{\"int\":1234},\"RT_BINFULL\":{\"int\":12345678},\"RT_BINDBLE\":{\"long\":123456789012},\"RT_GRP01\":{\"string\":\"ThisIs1st!\"},\"RT_GRP02\":{\"string\":\"ThisIs2nd!\"},\"RT_GRP03\":{\"string\":\"ThisIs3rd!\"}}\r\n<\/code><\/pre>\n<p>\u5728VSAM\u4e0a\u6709\u56db\u4e2a\u8bb0\u5f55\u3002\u4ece\u8fd9\u91cc\u5f00\u59cb\u8fdb\u884c\u955c\u50cf\u5904\u7406\u3002<\/p>\n<h3>\u65b0\u589e\u8bb0\u5f55<\/h3>\n<p>\u6211\u5c06\u8fd0\u884cTGFADD\u7a0b\u5e8f\uff0c\u5c1d\u8bd5\u6dfb\u52a0Key:000005\u7684\u8bb0\u5f55\u3002<\/p>\n<p>\u4e3b\u9898\u4e2d\u6dfb\u52a0\u4e86\u4ee5\u4e0b\u6d88\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>{\"RT_KEY\":{\"string\":\"000005\"}}  {\"RT_KEY\":{\"string\":\"000005\"},\"RT_ALPHA\":{\"string\":\"ThisIsROOT\"},\"RT_ALPHAKANA\":{\"string\":\"\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\"},\"RT_MIXDBCS\":{\"string\":\"\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587  \"},\"RT_MIXALL\":{\"string\":\"ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\"},\"RT_GRAPHIC\":{\"string\":\"\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\"},\"RT_DECIMAL\":{\"string\":\"1234567890\"},\"RT_PACKED\":{\"int\":12345},\"RT_BINHALF\":{\"int\":1234},\"RT_BINFULL\":{\"int\":12345678},\"RT_BINDBLE\":{\"long\":123456789012},\"RT_GRP01\":{\"string\":\"ThisIs1st!\"},\"RT_GRP02\":{\"string\":\"ThisIs2nd!\"},\"RT_GRP03\":{\"string\":\"ThisIs3rd!\"}}\r\n<\/code><\/pre>\n<h3>\u5237\u65b0\u8bb0\u5f55<\/h3>\n<p>\u6211\u5c06\u8fd0\u884cTGFUPDT\u7a0b\u5e8f\uff0c\u5c1d\u8bd5\u66f4\u65b0\u952e\u4e3a000005\u7684\u8bb0\u5f55\u3002<\/p>\n<p>\u4e3b\u9898\u4e2d\u6dfb\u52a0\u4e86\u4ee5\u4e0b\u8baf\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>{\"RT_KEY\":{\"string\":\"000005\"}}  {\"RT_KEY\":{\"string\":\"000005\"},\"RT_ALPHA\":{\"string\":\"16:15:20.9\"},\"RT_ALPHAKANA\":{\"string\":\"\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\"},\"RT_MIXDBCS\":{\"string\":\"\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u3231\u2460\u2160\u9bf5\u9c3a\"},\"RT_MIXALL\":{\"string\":\"ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\"},\"RT_GRAPHIC\":{\"string\":\"\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\"},\"RT_DECIMAL\":{\"string\":\"1234567890\"},\"RT_PACKED\":{\"int\":12345},\"RT_BINHALF\":{\"int\":1234},\"RT_BINFULL\":{\"int\":12345678},\"RT_BINDBLE\":{\"long\":123456789012},\"RT_GRP01\":{\"string\":\"ThisIs1st!\"},\"RT_GRP02\":{\"string\":\"ThisIs2nd!\"},\"RT_GRP03\":{\"string\":\"ThisIs3rd!\"}}\r\n<\/code><\/pre>\n<h3>\u5220\u9664\u8bb0\u5f55<\/h3>\n<p>\u6211\u5c06\u8fd0\u884cTGFDEL\u7a0b\u5e8f\u6765\u5220\u9664Key:000005\u7684\u8bb0\u5f55\u3002<\/p>\n<p>\u4e3b\u9898\u4e0a\u6dfb\u52a0\u4e86\u4ee5\u4e0b\u6d88\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>{\"RT_KEY\":{\"string\":\"000005\"}}  null\r\n<\/code><\/pre>\n<h2>\u8865\u5145<\/h2>\n<p>\u6211\u6b63\u5728\u4f7f\u7528Kafka Consumer\u68c0\u67e5\u7ed3\u679c\uff0c\u800c\u6267\u884ckafka-avro-console-consumer\u7684\u533a\u57df\u8bbe\u7f6e\u4e3aja_JP.UTF-8\u3002\u6362\u53e5\u8bdd\u8bf4\uff0c\u539f\u59cb\u6570\u636e\u662fEBCDIC\uff081399\uff09\uff0c\u4f46\u5df2\u786e\u8ba4\u8f6c\u6362\u4e3aUTF-8\u5b57\u7b26\u7f16\u7801\u3002<br \/>\n\u5373\u4f7f\u662fGraphic\u7c7b\u578b\uff08\u4ec5\u9650DBCS\uff09\u7684\u5b57\u6bb5\u4e5f\u80fd\u6b63\u786e\u8fdb\u884c\u7f16\u7801\u8f6c\u6362\uff0c\u800c\u73af\u5883\u4f9d\u8d56\u5b57\u7b26\uff08\u3231\u3001\u2460\u7b49\uff09\u4f3c\u4e4e\u4e5f\u80fd\u8f6c\u6362\u6210\u529f\u3002<br \/>\n\u53e6\u5916\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cCOBOL COPYBOOK\u7684\u7c7b\u578b\u4e0eKafka\u4e0a\u7684\u7c7b\u578b\u88ab\u6620\u5c04\u5982\u4e0b\u3002<\/p>\n<div>\n<div class=\"post-table\">COBOL COPYBOOKAvro01 RT-SEG.-02 RT-KEY PIC X(06).string02 RT-ALPHA PIC X(10).string02 RT-ALPHAKANA PIC X(10).string02 RT-MIXDBCS PIC X(32).string02 RT-MIXALL PIC X(40).string02 RT-GRAPHIC PIC G(15) USAGE DISPLAY-1.string02 RT-DECIMAL PIC 9(10).string02 RT-PACKED PIC S9(05) COMP-3.int02 RT-BINHALF PIC S9(04) COMP.int02 RT-BINFULL PIC S9(08) COMP.int02 RT-BINDBLE PIC S9(12) COMP.long02 RT-GROUP.-03 RT-GRP01 PIC X(10).string03 RT-GRP02 PIC X(10).string03 RT-GRP03 PIC X(10).string02 FILLER PIC X(15).\u306a\u3057<\/div>\n<\/div>\n<h1>\u590d\u5236\u6d4b\u8bd52<\/h1>\n<p>\u6211\u5c06\u7a0d\u5fae\u4fee\u6539\u7b2c\u4e00\u4e2a\u6d4b\u8bd5\u7684\u60c5\u8282\u7136\u540e\u518d\u8bd5\u4e00\u8bd5\u3002\u5728\u8fd9\u91cc\uff0c\u6211\u5c06\u5c1d\u8bd5\u81ea\u5b9a\u4e49\u4e00\u90e8\u5206\u7531CopyBook\u751f\u6210\u7684VSAM\u8868\u683c\u3002<\/p>\n<p>\u4f7f\u7528\u7684\u590d\u5370\u672c<\/p>\n<pre class=\"post-pre\"><code>        01 RT-SEG.\r\n            02 RT-KEY       PIC  X(06) VALUE '000001'.\r\n            02 RT-ALPHA     PIC  X(10) VALUE 'ThisIsROOT'.\r\n            02 RT-ALPHAKANA PIC  X(10) VALUE '\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a'.\r\n            02 RT-MIXDBCS   PIC  X(32)\r\n                     VALUE '\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587'.\r\n            02 RT-MIXALL    PIC  X(40)\r\n                    VALUE 'ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78'.\r\n            02 RT-GRAPHIC   PIC  G(15) USAGE DISPLAY-1\r\n                   VALUE G'\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa'.\r\n            02 RT-DECIMAL   PIC  9(10) VALUE 1234567890.\r\n            02 RT-PACKED    PIC S9(05) COMP-3 VALUE 12345.\r\n            02 RT-BINHALF   PIC S9(04) COMP  VALUE 1234.\r\n            02 RT-BINFULL   PIC S9(08) COMP  VALUE 12345678.\r\n            02 RT-BINDBLE   PIC S9(12) COMP  VALUE 123456789012.\r\n            02 RT-GROUP.\r\n             03 RT-GRP01    PIC  X(10) VALUE 'ThisIs1st!'.\r\n             03 RT-GRP02    PIC  X(10) VALUE 'ThisIs2nd!'.\r\n             03 RT-GRP03    PIC  X(10) VALUE 'ThisIs3rd!'.\r\n            02 RT-BIT8      PIC  X(01) VALUE X'F0'.       \r\n            02 RT-BIT16     PIC  X(02) VALUE X'FFF0'.     \r\n            02 RT-BIT32     PIC  X(04) VALUE X'FFFFFFF0'. \r\n            02 FILLER       PIC  X(08) VALUE SPACE. \r\n<\/code><\/pre>\n<p>\u6211\u6dfb\u52a0\u4e86\u4e00\u4e2a\u5b57\u6bb5\uff0c\u7528\u4e8e\u5b58\u50a8\u6700\u540e\u7684\u4e8c\u8fdb\u5236\u6570\u636e\u3002\u5b57\u6bb5\u7684\u7c7b\u578b\u662fPIC X\uff0c\u4f46\u8fd9\u91cc\u5047\u8bbe\u5305\u542b\u7684\u662f\u4e8c\u8fdb\u5236\u6570\u636e\uff08\u4e0d\u8fdb\u884c\u7f16\u7801\u8f6c\u6362\uff09\u7684\u6570\u636e\u3002<br \/>\n\uff08\u8fd9\u662f\u5c06\u6307\u5b9a\u7684\u56fa\u5b9a\u503c\u76f4\u63a5\u5199\u5165\u6587\u4ef6\u7684\u6982\u5ff5\u3002\uff09<\/p>\n<p>\u5728\u5148\u524d\u7684\u4f8b\u5b50\u4e2d\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cPIC X\u5c06\u88ab\u89c6\u4e3a\u5b57\u7b26\u4e32(string)\u3002\u901a\u5e38\u8fd9\u6ca1\u6709\u95ee\u9898\uff0c\u4f46\u662f\u4e5f\u53ef\u80fd\u5b58\u5728\u5c06\u4e8c\u8fdb\u5236\u4fe1\u606f\u5b58\u50a8\u5728PIC X\u5b57\u6bb5\u4e2d\u5e76\u8fdb\u884c\u5904\u7406\u7684\u60c5\u51b5\uff0c\u56e0\u6b64\u6211\u4eec\u5c06\u5c1d\u8bd5\u660e\u786e\u5c06\u7279\u5b9a\u5b57\u6bb5\u89c6\u4e3a\u4e8c\u8fdb\u5236\u8fdb\u884c\u5904\u7406\u3002<br \/>\n\u53e6\u5916\uff0c\u5728\u5148\u524d\u7684\u4f8b\u5b50\u4e2d\uff0cPIC 9 (\u4f7f\u7528\u5341\u8fdb\u5236\u533a\u57df)\u5b57\u6bb5\u4e5f\u88ab\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\u3002\u6211\u4eec\u4e5f\u5c06\u5c1d\u8bd5\u660e\u786e\u5c06\u5176\u89c6\u4e3a\u6570\u5b57\u8fdb\u884c\u5904\u7406\u3002<\/p>\n<p>\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u5c06\u6309\u7167\u4e0e\u6d4b\u8bd51\u76f8\u540c\u7684\u6b65\u9aa4\u6dfb\u52a0\u590d\u5236\u914d\u7f6e\uff0c\u4f46\u53ea\u8bb0\u5f55\u4e0e\u6d4b\u8bd51\u4e0d\u540c\u7684\u5730\u65b9\u3002\u5176\u4ed6\u6b65\u9aa4\u90fd\u76f8\u540c\u3002<\/p>\n<h2>VSAM\u8868\u7684\u5b9a\u5236\u5316<\/h2>\n<p>\u4ee5 COBOL \u7684 CopyBook \u5bfc\u5165 VSAM \u8868\uff0c\u7136\u540e\u751f\u6210 DDL\uff0c\u5e76\u5c06\u5176\u5e94\u7528\u4e8e VSAM Remote Source \u4ee5\u53cd\u6620 VSAM \u8868\u3002\u4f46\u5728\u5e94\u7528\u4e4b\u524d\uff0c\u9700\u8981\u6839\u636e\u9700\u8981\u5b9a\u5236\u751f\u6210\u7684 DDL\u3002<\/p>\n<p>DDL\u7684\u5b9a\u5236\u5c06\u53c2\u8003\u624b\u518c\u4e2d\u4ee5\u4e0b\u90e8\u5206\u7684\u5185\u5bb9\uff1a<br \/>\n\u53c2\u8003\uff1aVSAM\u7684\u5217\u3002<\/p>\n<p>\u4ee5\u4e0b\u662f\u6839\u636e\u4e4b\u524d\u63d0\u4f9b\u7684CopyBook\u5728Classic Data Architect\u4e0a\u751f\u6210\u7684DDL\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\">--&lt;ScriptOptions statementTerminator=\";\"\/&gt;<\/span>\r\n\r\n<span class=\"k\">CREATE<\/span> <span class=\"k\">TABLE<\/span> <span class=\"nv\">\"TEST01\"<\/span><span class=\"p\">.<\/span><span class=\"nv\">\"FILET2\"<\/span> <span class=\"n\">DBTYPE<\/span> <span class=\"n\">VSAM<\/span>\r\n\t<span class=\"n\">DS<\/span> <span class=\"nv\">\"DB2P.CT56B4A1.FILET2\"<\/span>\r\n\t<span class=\"p\">(<\/span>\r\n\r\n\t<span class=\"nv\">\"RT_KEY\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">0<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">6<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">6<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_ALPHA\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">6<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">10<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">10<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_ALPHAKANA\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">16<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">10<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">10<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_MIXDBCS\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">26<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">32<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">32<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_MIXALL\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">58<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">40<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">40<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_GRAPHIC\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">98<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">15<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">GRAPHIC<\/span><span class=\"p\">(<\/span><span class=\"mi\">15<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_DECIMAL\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">128<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">10<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"n\">UC<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">10<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_PACKED\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">138<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">3<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"n\">P<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">DECIMAL<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span> <span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_BINHALF\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">141<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">2<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"n\">H<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">SMALLINT<\/span><span class=\"p\">,<\/span>\r\n\t<span class=\"nv\">\"RT_BINFULL\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">143<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">4<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"n\">F<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">INTEGER<\/span><span class=\"p\">,<\/span>\r\n\t<span class=\"nv\">\"RT_BINDBLE\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">147<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">8<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"n\">D<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">DECIMAL<\/span><span class=\"p\">(<\/span><span class=\"mi\">12<\/span> <span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_GRP01\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">155<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">10<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">10<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_GRP02\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">165<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">10<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">10<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_GRP03\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">175<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">10<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">10<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_BIT8\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">185<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">1<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_BIT16\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">186<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">2<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_BIT32\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">188<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">4<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"k\">C<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">CHAR<\/span><span class=\"p\">(<\/span><span class=\"mi\">4<\/span><span class=\"p\">));<\/span>\r\n\r\n<span class=\"k\">ALTER<\/span> <span class=\"k\">TABLE<\/span> <span class=\"nv\">\"TEST01\"<\/span><span class=\"p\">.<\/span><span class=\"nv\">\"FILET2\"<\/span> <span class=\"k\">DATA<\/span> <span class=\"n\">CAPTURE<\/span> <span class=\"n\">CHANGES<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<p>\u5c06\u6b64\u66f4\u6539\u5982\u4e0b\uff08\u4ec5\u6458\u5f55\u66f4\u6539\u90e8\u5206\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">...<\/span>\r\n\t<span class=\"nv\">\"RT_DECIMAL\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">128<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">10<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"n\">UC<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">DECIMAL<\/span><span class=\"p\">(<\/span><span class=\"mi\">10<\/span> <span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">),<\/span>\r\n<span class=\"p\">...<\/span>\r\n\t<span class=\"nv\">\"RT_BIT8\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">185<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">1<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"n\">B<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">BINARY<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_BIT16\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">186<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">2<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"n\">B<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">BINARY<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">),<\/span>\r\n\t<span class=\"nv\">\"RT_BIT32\"<\/span> <span class=\"k\">SOURCE<\/span> <span class=\"n\">DEFINITION<\/span>\r\n\t\t<span class=\"n\">DATAMAP<\/span> <span class=\"k\">OFFSET<\/span> <span class=\"mi\">188<\/span> <span class=\"k\">LENGTH<\/span> <span class=\"mi\">4<\/span>\r\n\t\t<span class=\"n\">DATATYPE<\/span> <span class=\"n\">B<\/span>\r\n\t\t<span class=\"n\">USE<\/span> <span class=\"k\">AS<\/span> <span class=\"nb\">BINARY<\/span><span class=\"p\">(<\/span><span class=\"mi\">4<\/span><span class=\"p\">));<\/span>\r\n<span class=\"p\">...<\/span>\r\n<\/code><\/pre>\n<p>\u5e94\u7528\u4e0a\u8ff0DDL\u540e\uff0c\u51fa\u73b0\u4e86\u4ee5\u4e0b\u8b66\u544a\uff0c\u5176\u4e0e\u4fee\u6539\u7684\u533a\u57df\u65e0\u5173\u3002\u770b\u8d77\u6765\u53ef\u4ee5\u5148\u5ffd\u7565\uff0c\u6682\u65f6\u4e0d\u5904\u7406\u3002<\/p>\n<pre class=\"post-pre\"><code>SQLState=S1000 \u5217 RT_BINDBLE \u306b\u3064\u3044\u3066 LENGTH 8 \u306f\u3001DECIMAL \u306e USE AS SQL \u30c7\u30fc\u30bf\u30fb\u30bf\u30a4\u30d7\u306b\u57fa\u3065\u3044\u3066\u7121\u8996\u3055\u308c\u307e\u3059\u3002 .\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/142-0.png\" alt=\"image.png\" \/><\/div>\n<h2>\u8fdb\u884c\u6d4b\u8bd5<\/h2>\n<p>\u8ba9\u6211\u4eec\u4f7f\u7528Avro Consumer\u5c06\u6570\u636e\u6ce8\u5165\u5230VSAM\u4e2d\uff0c\u5e76\u68c0\u67e5Kafka\u7684Topic\u3002<\/p>\n<pre class=\"post-pre\"><code>{\"RT_KEY\":{\"string\":\"000001\"}}  {\"RT_KEY\":{\"string\":\"000001\"},\"RT_ALPHA\":{\"string\":\"ThisIsROOT\"},\"RT_ALPHAKANA\":{\"string\":\"\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\"},\"RT_MIXDBCS\":{\"string\":\"\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\u5168\u89d2\u6f22\u6587  \"},\"RT_MIXALL\":{\"string\":\"ABCDEFGH\u3042\u3044\u3046abcdefgh\u5168\u89d2\u6f22\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\"},\"RT_GRAPHIC\":{\"string\":\"\u5168\u89d2\u6f22\u6587\u5b57\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\"},\"RT_DECIMAL\":{\"long\":1234567890},\"RT_PACKED\":{\"int\":12345},\"RT_BINHALF\":{\"int\":1234},\"RT_BINFULL\":{\"int\":12345678},\"RT_BINDBLE\":{\"long\":123456789012},\"RT_GRP01\":{\"string\":\"ThisIs1st!\"},\"RT_GRP02\":{\"string\":\"ThisIs2nd!\"},\"RT_GRP03\":{\"string\":\"ThisIs3rd!\"},\"RT_BIT8\":{\"bytes\":\"d\"},\"RT_BIT16\":{\"bytes\":\"yd\"},\"RT_BIT32\":{\"bytes\":\"yyyd\"}}\r\n<\/code><\/pre>\n<p>RT_DECIMAL\u88ab\u6b63\u786e\u5730\u8f6c\u6362\u4e3a\u6570\u503c\u578b\uff08long\uff09\u3002<br \/>\n\u800cRT_BIT8\u3001RT_BIT16\u548cRT_BIT32\u88ab\u9519\u8bef\u5730\u663e\u793a\u4e3a\u5b57\u7b26\u4e32\u3002<\/p>\n<p>\u6211\u6765\u786e\u8ba4\u4e00\u4e0b\u67b6\u6784\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">{<\/span>\r\n  <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"record\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"FILET2\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"namespace\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"value.SOURCEDB.VSAM.TEST01\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"fields\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n<span class=\"err\">...<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"RT_DECIMAL\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n        <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"long\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"logicalType\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DECIMAL\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"dbColumnName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"RT_DECIMAL\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"precision\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">10<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"scale\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"s2\">\"null\"<\/span>\r\n      <span class=\"p\">],<\/span>\r\n      <span class=\"nl\">\"doc\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span>\r\n    <span class=\"p\">},<\/span>\r\n<span class=\"err\">...<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"RT_BIT8\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n        <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"bytes\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"logicalType\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"BINARY\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"dbColumnName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"RT_BIT8\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"length\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"s2\">\"null\"<\/span>\r\n      <span class=\"p\">],<\/span>\r\n      <span class=\"nl\">\"doc\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"RT_BIT16\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n        <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"bytes\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"logicalType\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"BINARY\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"dbColumnName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"RT_BIT16\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"length\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">2<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"s2\">\"null\"<\/span>\r\n      <span class=\"p\">],<\/span>\r\n      <span class=\"nl\">\"doc\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"RT_BIT32\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n        <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"bytes\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"logicalType\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"BINARY\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"dbColumnName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"RT_BIT32\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"length\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">4<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"s2\">\"null\"<\/span>\r\n      <span class=\"p\">],<\/span>\r\n      <span class=\"nl\">\"doc\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\"<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">]<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u5728\u6a21\u5f0f\u4e0a\uff0cRT_BITxx\u5b57\u6bb5\u7684&#8221;type&#8221;\u88ab\u8bbe\u7f6e\u4e3a&#8221;bytes&#8221;\uff0c\u56e0\u6b64\u53ef\u80fd\u662f\u7531AvroComsumer\u7684\u89c4\u8303\u5c06\u5176\u663e\u793a\u4e3a\u5b57\u7b26\u4e32\u5f62\u5f0f\u3002<\/p>\n<p>\u6211\u5011\u5c07\u4f7f\u7528kafka-console-consumer\u5de5\u5177\uff0c\u53ea\u62bd\u53d6\u9996\u500b\u8a0a\u606f\u4e26\u8f38\u51faHex\u78bc\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 ~\/Kafka]# \/opt\/confluent-6.2.0\/bin\/kafka-console-consumer --from-beginning --topic cdc_kafka_test01.filet02.sourcedb.vsam.test01.filet2 --max-messages 1 --bootstrap-server localhost:9092 | xxd &gt; temp.txt\r\nProcessed a total of 1 messages\r\n\r\n[root@test12 ~\/Kafka]# cat temp.txt\r\n00000000: 0000 0000 0200 0c30 3030 3030 3100 1454  .......000001..T\r\n00000010: 6869 7349 7352 4f4f 5400 3cef bdb1 efbd  hisIsROOT.&lt;.....\r\n00000020: b2ef bdb3 efbd b4ef bdb5 efbd b6ef bdb7  ................\r\n00000030: efbd b8ef bdb9 efbd ba00 58e3 8182 e381  ..........X.....\r\n00000040: 84e3 8186 e381 88e3 818a e382 a2e3 82a4  ................\r\n00000050: e382 a6e3 82a8 e382 aae5 85a8 e8a7 92e6  ................\r\n00000060: bca2 e696 8720 2000 7441 4243 4445 4647  .....  .tABCDEFG\r\n00000070: 48e3 8182 e381 84e3 8186 6162 6364 6566  H.........abcdef\r\n00000080: 6768 e585 a8e8 a792 e6bc a2ef bdb1 efbd  gh..............\r\n00000090: b2ef bdb3 efbd b4ef bdb5 efbd b6ef bdb7  ................\r\n000000a0: efbd b800 5ae5 85a8 e8a7 92e6 bca2 e696  ....Z...........\r\n000000b0: 87e5 ad97 e381 82e3 8184 e381 86e3 8188  ................\r\n000000c0: e381 8ae3 82a2 e382 a4e3 82a6 e382 a8e3  ................\r\n000000d0: 82aa 00a4 8bb0 9909 00f2 c001 00a4 1300  ................\r\n000000e0: 9c85 e30b 00a8 e8c8 e997 0700 1454 6869  .............Thi\r\n000000f0: 7349 7331 7374 2100 1454 6869 7349 7332  sIs1st!..ThisIs2\r\n00000100: 6e64 2100 1454 6869 7349 7333 7264 2100  nd!..ThisIs3rd!.\r\n00000110: 02f0 0004 fff0 0008 ffff fff0 0a         .............\r\n<\/code><\/pre>\n<p>\u6211\u627e\u5230\u4e86\u672b\u5c3e\u6709f0 fff0 fffffff0\u7684\u6570\u636e\uff0c\u5728\u53d1\u9001\u65f6\u5b83\u88ab\u786e\u8ba4\u4e3a\u975e\u4e8c\u8fdb\u5236\u6570\u636e\u800c\u4e0d\u662f\u4ee3\u7801\u8f6c\u6362\u3002<\/p>\n<h1>\u603b\u7ed3<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kafka\u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u3068\u3057\u3066\u9023\u643a\u3059\u308b\u5834\u5408\u3001\u66f4\u65b0\u60c5\u5831\u304c1\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u3057\u3066Topic\u4e0a\u306b\u9001\u4ed8\u3055\u308c\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kafka Topic\u4e0a\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306fKey + Value\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u304c\u3001Key\u90e8\u5206\u306b\u306f\u66f4\u65b0\u30ec\u30b3\u30fc\u30c9\u306e\u30ad\u30fc\u3068\u306a\u308b\u30d5\u30a3\u30fc\u30eb\u30c9\u3001Value\u90e8\u5206\u306b\u306f\u66f4\u65b0\u30ec\u30b3\u30fc\u30c9\u5168\u4f53\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30e1\u30c3\u30bb\u30fc\u30b8\u5358\u4f53\u304b\u3089\u306fInsert, Update\u306e\u533a\u5225\u306f\u3064\u304d\u307e\u305b\u3093\u3002Update\u306e\u5834\u5408\u3001\u66f4\u65b0\u5f8c\u306e\u30ec\u30b3\u30fc\u30c9\u60c5\u5831\u304cValue\u306b\u542b\u307e\u308c\u308b\u3060\u3051\u306a\u306e\u3067\u3069\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u5909\u66f4\u304c\u5165\u3063\u305f\u304b\u306e\u5224\u5225\u3082\u3067\u304d\u307e\u305b\u3093\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Delete\u306e\u5834\u5408\u3001Delete\u3055\u308c\u305f\u30ec\u30b3\u30fc\u30c9\u306eKey\u60c5\u5831\u306e\u307f\u304c\u8ee2\u9001\u3055\u308c\u3001Value\u90e8\u5206\u306fnull\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">MixedField, DBCS\u306e\u307f\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3001\u6570\u5024\u30d5\u30a3\u30fc\u30eb\u30c9\u306a\u3069\u4e0a\u306e\u30c6\u30b9\u30c8\u3067\u6319\u3052\u305f\u578b\u306f\u610f\u56f3\u3057\u305f\u901a\u308a\u306b\u5909\u63db\u3067\u304d\u3066\u3044\u308b\u3088\u3046\u3067\u3059(Mixed Field\u3068DBCS Field\u305d\u308c\u305e\u308c\u306b\u5bfe\u3057\u3066CCSID\u3092\u6307\u5b9a\u3059\u308b\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u3042\u308b\u306e\u3067\u6ce8\u610f\uff01)\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30d0\u30a4\u30ca\u30ea\u3084\u4e00\u90e8\u306e\u6570\u5024\u30d5\u30a3\u30fc\u30eb\u30c9\u306fCopyBook\u304b\u3089\u751f\u6210\u3055\u308c\u308bDDL\u3092\u624b\u52d5\u3067\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3066VSAM\u8868\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u306e\u3067\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u66f4\u65b0\u60c5\u5831\u306f\u3001\u66f4\u65b0\u3055\u308c\u305f\u5404\u30ec\u30b3\u30fc\u30c9\u5358\u4f4d\u3067\u72ec\u7acb\u3057\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u3057\u3066Kafka\u306b\u9001\u3089\u308c\u307e\u3059\u3002\u30bd\u30fc\u30b9\u5074\u3067\u8907\u6570\u30ec\u30b3\u30fc\u30c9\u306e\u66f4\u65b0\u30921UOW\u3067\u66f4\u65b0\u3057\u305f\u5834\u5408\u306a\u3069\u3067\u3082\u3001Kafka\u5074\u3067\u306f\u5225\u3005\u306e\u30a4\u30d9\u30f3\u30c8\u3068\u3057\u3066\u6349\u3048\u3089\u308c\u3066\u3057\u307e\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001Kafka\u304b\u3089\u5148\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u3078\u306e\u53cd\u6620\u30bf\u30a4\u30df\u30f3\u30b0\u306b\u3088\u3063\u3066\u306f\u6574\u5408\u6027\u306e\u53d6\u308c\u3066\u3044\u306a\u3044\u72b6\u614b\u3068\u306a\u308a\u5f97\u307e\u3059(Partition\u30921\u3064\u306b\u3057\u3066\u3082\u3001\u540c\u4e00\u8868\u306e\u7570\u306a\u308b\u30ec\u30b3\u30fc\u30c9\u30921UOW\u3067\u66f4\u65b0\u3057\u305f\u5834\u5408\u306f\u53cd\u6620\u30bf\u30a4\u30df\u30f3\u30b0\u306b\u3088\u3063\u3066\u306f\u4e0d\u6574\u5408\u72b6\u614b\u304c\u751f\u3058\u3046\u308b)\u3002\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u6027\u3092\u4fdd\u8a3c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001&#8221;Kafka transactionally consistent consumer&#8221;\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u30011UOW\u3068\u3057\u3066\u6271\u308f\u308c\u308b\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u584a\u3092Kafka Consumer\u5074\u3067\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/ul>\n<p>\u53c2\u8003:<br \/>\nKafka\u4e8b\u52a1\u6027\u4e00\u81f4\u6027\u6d88\u8d39\u8005<br \/>\n\u5229\u7528Kafka\u63d0\u4f9b\u7aef\u5230\u7aefACID\u4e8b\u52a1\u7684\u89e3\u51b3\u65b9\u6848<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u5df2\u7ecf\u8ba8\u8bba\u4e86\u5c06z\/OS\u4e0a\u7684VSAM\u6587\u4ef6\u590d\u5236\u5230Db2\u548cKafka\u7684\u914d\u7f6e\u6d41\u7a0b\u3002\u7531\u4e8e\u6211\u4eec\u540c\u65f6\u8fdb\u884c\u4e86\u57fa [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-47018","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5728z\/OS\u4e0a\u7684VSAM\u7684\u590d\u5236 - (4) \u6dfb\u52a0VSAM\u6587\u4ef6\uff08\u4e0eKafka\u534f\u540c\u5de5\u4f5c\uff09\/ \u590d\u5236\u7684\u6d4b\u8bd5 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728z-os\u4e0a\u7684vsam\u7684\u590d\u5236-4-\u6dfb\u52a0vsam\u6587\u4ef6\uff08\u4e0ekafka\u534f\u540c\u5de5\u4f5c\uff09-\u590d\u5236\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5728z\/OS\u4e0a\u7684VSAM\u7684\u590d\u5236 - (4) \u6dfb\u52a0VSAM\u6587\u4ef6\uff08\u4e0eKafka\u534f\u540c\u5de5\u4f5c\uff09\/ \u590d\u5236\u7684\u6d4b\u8bd5\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u5df2\u7ecf\u8ba8\u8bba\u4e86\u5c06z\/OS\u4e0a\u7684VSAM\u6587\u4ef6\u590d\u5236\u5230Db2\u548cKafka\u7684\u914d\u7f6e\u6d41\u7a0b\u3002\u7531\u4e8e\u6211\u4eec\u540c\u65f6\u8fdb\u884c\u4e86\u57fa [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728z-os\u4e0a\u7684vsam\u7684\u590d\u5236-4-\u6dfb\u52a0vsam\u6587\u4ef6\uff08\u4e0ekafka\u534f\u540c\u5de5\u4f5c\uff09-\u590d\u5236\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-03T17:56:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T11:08:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/5-0.png\" \/>\n<meta name=\"author\" content=\"\u9038, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u9038, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/\",\"name\":\"\u5728z\/OS\u4e0a\u7684VSAM\u7684\u590d\u5236 - (4) \u6dfb\u52a0VSAM\u6587\u4ef6\uff08\u4e0eKafka\u534f\u540c\u5de5\u4f5c\uff09\/ \u590d\u5236\u7684\u6d4b\u8bd5 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-09-03T17:56:46+00:00\",\"dateModified\":\"2024-04-29T11:08:06+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5728z\/OS\u4e0a\u7684VSAM\u7684\u590d\u5236 &#8211; (4) \u6dfb\u52a0VSAM\u6587\u4ef6\uff08\u4e0eKafka\u534f\u540c\u5de5\u4f5c\uff09\/ \u590d\u5236\u7684\u6d4b\u8bd5\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\",\"name\":\"\u9038, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"caption\":\"\u9038, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5728z\/OS\u4e0a\u7684VSAM\u7684\u590d\u5236 - (4) \u6dfb\u52a0VSAM\u6587\u4ef6\uff08\u4e0eKafka\u534f\u540c\u5de5\u4f5c\uff09\/ \u590d\u5236\u7684\u6d4b\u8bd5 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728z-os\u4e0a\u7684vsam\u7684\u590d\u5236-4-\u6dfb\u52a0vsam\u6587\u4ef6\uff08\u4e0ekafka\u534f\u540c\u5de5\u4f5c\uff09-\u590d\u5236\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5728z\/OS\u4e0a\u7684VSAM\u7684\u590d\u5236 - (4) \u6dfb\u52a0VSAM\u6587\u4ef6\uff08\u4e0eKafka\u534f\u540c\u5de5\u4f5c\uff09\/ \u590d\u5236\u7684\u6d4b\u8bd5","og_description":"\u9996\u5148 \u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u5df2\u7ecf\u8ba8\u8bba\u4e86\u5c06z\/OS\u4e0a\u7684VSAM\u6587\u4ef6\u590d\u5236\u5230Db2\u548cKafka\u7684\u914d\u7f6e\u6d41\u7a0b\u3002\u7531\u4e8e\u6211\u4eec\u540c\u65f6\u8fdb\u884c\u4e86\u57fa [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728z-os\u4e0a\u7684vsam\u7684\u590d\u5236-4-\u6dfb\u52a0vsam\u6587\u4ef6\uff08\u4e0ekafka\u534f\u540c\u5de5\u4f5c\uff09-\u590d\u5236\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-09-03T17:56:46+00:00","article_modified_time":"2024-04-29T11:08:06+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7bfd913a08637a69af05\/5-0.png"}],"author":"\u9038, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u9038, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"25 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/","name":"\u5728z\/OS\u4e0a\u7684VSAM\u7684\u590d\u5236 - (4) \u6dfb\u52a0VSAM\u6587\u4ef6\uff08\u4e0eKafka\u534f\u540c\u5de5\u4f5c\uff09\/ \u590d\u5236\u7684\u6d4b\u8bd5 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-09-03T17:56:46+00:00","dateModified":"2024-04-29T11:08:06+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5728z\/OS\u4e0a\u7684VSAM\u7684\u590d\u5236 &#8211; (4) \u6dfb\u52a0VSAM\u6587\u4ef6\uff08\u4e0eKafka\u534f\u540c\u5de5\u4f5c\uff09\/ \u590d\u5236\u7684\u6d4b\u8bd5"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487","name":"\u9038, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","caption":"\u9038, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8z-os%e4%b8%8a%e7%9a%84vsam%e7%9a%84%e5%a4%8d%e5%88%b6-4-%e6%b7%bb%e5%8a%a0vsam%e6%96%87%e4%bb%b6%ef%bc%88%e4%b8%8ekafka%e5%8d%8f%e5%90%8c%e5%b7%a5%e4%bd%9c%ef%bc%89-%e5%a4%8d%e5%88%b6\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/47018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=47018"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/47018\/revisions"}],"predecessor-version":[{"id":87096,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/47018\/revisions\/87096"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=47018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=47018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=47018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}