アセンブラープログラムの作成(アセンブルJCL)
アセンブラーはメインフレーム・コンピューターでは現在でも広く利用されています。業務アプリケーション・プログラムを作成することはなくなってきたものの、OSのEXIT(出口)ルーチンやミドルウェア製品のパラメーター生成など使う機会はまだまだあります。
アセンブルオプションなどについては使用するアセンブラーのマニュアルを参照して下さい。
MVS高水準アセンブラーJCLサンプル
//********************************************************************* //* Sample JCL for IBM HIGH-LEVEL ASSEMBLER //* ======================================= //********************************************************************* //ASM EXEC PGM=ASMA90, // PARM=('OBJ,NODECK,XREF(SHORT),TERM,ASA,LANG(UE)', // 'US(MAP,WARN(11))') //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //SYSLIB DD DISP=SHR,DSN=MY.PROGRAM,DCB=BLKSIZE=32720 // DD DISP=SHR,DSN=SYS1.MACLIB // DD DISP=SHR,DSN=SYS1.MODGEN //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(5,5)) //SYSLIN DD DISP=(,PASS),UNIT=SYSDA,SPACE=(TRK,(15,15)) //SYSIN DD DISP=SHR,DSN=MY.PROGRAM(ASMTEST1) // //LKED EXEC PGM=IEWL,PARM=('LIST,LET,MAP,XREF') //SYSPRINT DD SYSOUT=* //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSLIB DD DISP=SHR,DSN=MY.LINKLIB //SYSLMOD DD DISP=SHR,DSN=MY.LINKLIB(COBTEST1) //SYSLIN DD DISP=(OLD,DELETE),DSN=*.ASM.SYSLIN // DD * リンケージエディタ制御文 // //LOADER EXEC PGM=LOADER,PARM='LIST,LET,MAP,XREF' //SYSLOUT DD SYSOUT=* //SYSLIN DD DISP=(OLD,DELETE),DSN=*.ASM.SYSLIN //
REGIONパラメーターは必要に応じて指定して下さい。アセンブルされたオブジェクトモジュールはバインダーでロードモジュールにするか、ローダーで直接実行します。
アセンブラーは標準のカタログプロシージャーを提供しています(SYS1.PROCLIB)からそちらも参考にしてください。
ASMAC,ASMACG,ASMACL,ASMACLG
MSPアセンブラーJCLサンプル
//********************************************************************* //* Sample JCL for FACOM STD ASSEMBLER //* ================================== //********************************************************************* //ASM EXEC PGM=JNP000, // PARM=('OBJ,NODECK,XREF(SHORT),TERM,LANGLVL(1)') //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //SYSLIB DD DISP=SHR,DSN=MY.PROGRAM,DCB=BLKSIZE=32720 // DD DISP=SHR,DSN=SYS1.MACLIB // DD DISP=SHR,DSN=SYS1.MODGEN //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(5,5)) //SYSLIN DD DISP=(,PASS),UNIT=SYSDA,SPACE=(TRK,(15,15)) //SYSGO DD DDNAME=SYSLIN //SYSIN DD DISP=SHR,DSN=MY.PROGRAM(ASMTEST1) //
リンケージエディターはプログラム名をJQALにすればMVSと同じJCLを使えます。ローダーも同じJCLです。
アセンブラーは標準のカタログプロシージャーを提供しています(SYS1.PROCLIB)からそちらも参考にしてください。
ASMFC,ASMFCG,ASMFCL,ASMFCLG
VOS3アセンブラーJCLサンプル
//********************************************************************* //* Sample JCL for VOS3 ASSEMBLER //* ============================= //* JOAXASM - XASM/E2(VOS3 EXTEND ASSEMBLER) //* JLAASSY - VOS3 STD ASSEMBLER //********************************************************************* //ASM EXEC PGM=JOAXASM // PARM=('OBJ,NODECK,XREF(SHORT),TERM') //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //SYSLIB DD DISP=SHR,DSN=MY.PROGRAM,DCB=BLKSIZE=32720 // DD DISP=SHR,DSN=SYS1.MACLIB // DD DISP=SHR,DSN=SYS1.MODMAC //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(5,5)) //SYSLIN DD DISP=(,PASS),UNIT=SYSDA,SPACE=(TRK,(15,15)) //SYSIN DD DISP=SHR,DSN=MY.PROGRAM(ASMTEST1) // //ASM EXEC PGM=JLAASSY // PARM=('OBJ,NODECK,XREF(SHORT),TERM') //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //SYSLIB DD DISP=SHR,DSN=MY.PROGRAM,DCB=BLKSIZE=32720 // DD DISP=SHR,DSN=SYS1.MACLIB // DD DISP=SHR,DSN=SYS1.MODMAC //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(2,2)) //SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(2,2)) //SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(2,2)) //SYSLIN DD DISP=(,PASS),UNIT=SYSDA,SPACE=(TRK,(15,15)) //SYSIN DD DISP=SHR,DSN=MY.PROGRAM(ASMTEST1) //
リンケージエディターはプログラム名をJSAXLNKにすればMVSと同じJCLを使えます。
アセンブラーは標準のカタログプロシージャーを提供しています(SYS1.PROCLIB)からそちらも参考にしてください。
ASMC,ASMCG,ASMCL,ASMCLGまたはXASMC,XASMCG,XASMCL,XASMCLG
XASMCが登録されていれば拡張アセンブラー(JOAXASM)が使えます。こちらを使う方がいいでしょう。JLAASSYは24ビット・モードのプログラム用アセンブラーで、31ビット・モード用命令の一部がアセンブルできない、などがあります。
4 Responses to “アセンブラープログラムの作成(アセンブルJCL)”
Comment from kamii
Time 2011年5月31日 at 22:02
Comment from shok
Time 2013年7月11日 at 06:48
一点指摘させて下さい
此方のサンプルJCLにはSYS1.MODMACがSYSLIBに書かれていますが、MODMACはシステムで使う入出力機器をゼネレーションするためのライブラリが格納されているデータセットのため、通常のアセンブルにはDDに積みません
MODMAC自体、VOS3の場合システムに関わるエンジニアしか知らないです
Comment from kamii
Time 2017年1月8日 at 19:38
アセンブル時にMODMACが必要かどうかはプログラムによりますが、システム系のソフトではアセンブルエラーになるのが面倒なので指定してます。サンプルはそれを流用したものなのでMODMACがSYSLIBに連結されてます。不要ならJCLから定義を外せばよろしいかと思います。
Comment from sunming
Time 2011年5月31日 at 17:33
//* =======================================
//************************************************
.
.
.
//SYSIN DD DISP=SHR,DSN=MY.PROGRAM(ASMTEST1)
//
//LKED EXEC PGM=IEWL,PARM=(‘LIST,LET,MAP,XREF’)
.
.
.
//SYSLIB DD DISP=SHR,DSN=MY.LINKLIB
//SYSLMOD DD DISP=SHR,DSN=MY.LINKLIB(COBTEST1)
//SYSLIN DD DISP=(OLD,DELETE),DSN=*.ASM.SYSLIN
// DD *
リンケージエディタ制御文
//
.
.
.
MY.PROGRAM(ASMTEST1)とMY.LINKLIB(COBTEST1)
何の関係がありますか、貴サイト詳しくご説明いかがでしょうか。