| 自由形式構文 | 許可されていない - EVAL、または %CHAR、%DATE、%DEC、%DECH、%GRAPH、%INT、%INTH、%TIME、%TIMESTAMP、%UCS2、%UNS、%UNSH などの組み込み関数を使用 |
| コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
|---|---|---|---|---|---|---|
| MOVEL(P) | データ属性 | ソース・フィールド | ターゲット・フィールド | + | - | ZB |
MOVEL 命令では、演算項目 2 から結果フィールドに文字が転送されます。 転送は演算項目 2 の左端の文字から開始されます。結果フィールドが配列の場合には、 結果の標識を指定することはできません。 この標識は、結果フィールドが配列要素または配列以外のフィールドの場合に は指定することができます。
データが数値フィールドに転送される場合には、結果フィールドの符号 (+ または -) が保持されます。ただし、演算項目 2 が結果フィールドと同じ長 さか、またはそれ以上の場合を除きます。 この場合には、演算項目 2 の符号は 結果フィールドの符号として使用されます。
演算項目 1 には、この命令の転送元または転送先の文字または数値フィールド の形式を指定するために、日付または時刻の形式を入れることができます。使用可能な形式に ついては、日付データ・タイプ、時刻データ・タイプ、および タイム・スタンプ・データ・タイプを参照してください。
転送元または転送先が文字フィールドである場合、オプションで、 演算項目 1 内の形式の後に区切り記号を示すことができます。 ただし、その形式で有効な区切り記号だけを使用する ことができます。
演算項目 2 が *DATE または UDATE で、結果が日付フィールドである 場合、演算項目 1 は必要ありません。 演算項目 1 に日付形式が含まれている場合、演算項目 1 は、制御仕様書 の DATEDIT キーワードによって指定されている *DATE または UDATE の 形式と互換性を持っている必要があります。
演算項目 2 が結果フィールドより長い場合には、演算項目 2 の余分な右端の文 字は転送されません。 結果フィールドが演算項目 2 より長い場合には、埋め込み が指定されていない限り、結果フィールドの右端の余分な文字は変更されませ ん。
浮動数値フィールドおよびリテラルを、演算項目 2 または結果フィールドの 指定として使用することはできません。
結果のデータが長過ぎて、結果フィールドに入りきらない場合、そのデータは 切り捨てられます。 結果が 1 バイト文字である場合、その結果に完全な文字が含まれている こと、および突き合わせられた SO/SI のペアが含まれていることは、ユーザーが確認 してください。
MOVEL 命令を 図 1 にまとめてあります。
可変長文字、図形、または UCS-2 データを転送する場合、可変長フィールドは、現在の長さが同じ固定長フィールドとまったく同様に機能します。MOVEL 命令では、可変長結果フィールドの長さは変わりません。 例については、 図 図 4 から 図 9 を参照してください。
MOVEL 命令の詳細については、移動命令、日付命令、 または 変換命令を参照してください。



*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
DName++++++++++ETDsFrom+++To/L+++IDc.Functions+++++++++++++++++++++++++++
D
*
* 図形フィールドと文字フィールドの間の MOVEL の例
*
D char_fld1 S 8A inz(' ')
D dbcs_fld1 S 4G inz('oAABBCCDDi')
D char_fld2 S 4A inz(' ')
D dbcs_fld2 S 3G inz(G'oAABBCCi')
D char_fld3 S 10A inz(*ALL'X')
D dbcs_fld3 S 3G inz(G'oAABBCCi')
D char_fld4 S 10A inz('oAABBCC i')
D dbcs_fld4 S 2G
*
*
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq..
*
* 結果フィールドの長さは演算項目 2 の長さ (バイト数) と同じです。
* SO/SI が挿入されるので、DBCS の 1 文字が失われます。
* MOVEL 命令の後の char_fld1 は 'oAABBCCi' になります。
*
C MOVEL dbcs_fld1 char_fld1
*
* 結果フィールドの長さが演算項目 2 の長さより短い。切り捨てが行われます。
* MOVEL 命令の後のchar_fld2 は 'oAAi' になります。
*
C MOVEL dbcs_fld2 char_fld2
*
* 結果フィールドの長さが演算項目 2 の長さより長い。例では、
* SO/SI がグラフィック・データの直前と直後に追加されています。
* MOVEL の前には結果フィールドに 'XXXXXXXXXX' が入っています。
* MOVEL 命令の後の char_fld3 の値は 'oAABBCCiXX' です。
*
C MOVEL dbcs_fld3 char_fld3
*
* 文字から図形への MOVEL。
* 結果フィールドが演算項目 2 より短い。切り捨てが行われます。
* MOVEL の後の dbcs_fld4 の値は 'AABB' です。
*
C MOVEL char_fld4 dbcs_fld4
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
HKeywords+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*
* 文字フィールドと日付フィールドの間の MOVEL の例
*
* Control specification date format
H DATFMT(*MDY)
*
DName++++++++++ETDsFrom+++To/L+++IDc.Functions+++++++++++++++++++++++++++
D datefld S D INZ(D'04/15/96')
D char_fld1 S 8A
D char_fld2 S 10A INZ('XXXXXXXXXX')
D char_fld3 S 10A INZ('04/15/96XX')
D date_fld3 S D
D char_fld4 S 10A INZ('XXXXXXXXXX')
D char_fld5 S 9A INZ('015/04/50')
D date_fld2 S D INZ(D'11/16/10')
*
*
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+H1LoEq..
* 日付から文字への MOVEL。
* 結果フィールドの長さが演算項目 2 の長さと同じ。
* MOVEL 命令の後の char_fld1 の値は '04/15/96' です。
C *MDY MOVEL datefld char_fld1
* 日付から文字への MOVEL。
* 結果フィールドの長さが演算項目 2 の長さより長い。
* MOVEL の前には結果フィールドに 'XXXXXXXXXX' が入っています。
* MOVEL 命令の後の char_fld2 の値は '04/15/96XX' です。
C *MDY MOVEL datefld char_fld2
* 文字から日付への MOVEL。
* 結果フィールドの長さが演算項目 2 の長さより短い。
* MOVEL 命令の後の date_fld3 の値は '04/15/96' です。
C *MDY MOVEL char_fld3 date_fld3
* 日付から文字への MOVEL (区切り記号なし)。
* 結果フィールドの長さが演算項目 2 の長さより長い。
* MOVEL の前には結果フィールドに 'XXXXXXXXXX' が入っています。
* MOVEL 命令の後の char_fld4 の値は '041596XXXX' です。
C *MDY0 MOVEL datefld char_fld4
* 文字から日付への MOVEL。
* 結果フィールドの長さが演算項目 2 の長さと同じ。
* 転送後の date_fld3 の値は 04/15/50 です。
C *CDMY MOVEL char_fld5 date_fld3
* 日付から文字への MOVEL (区切り記号なし)。
* 結果フィールドの長さが演算項目 2 の長さより長い。
* 転送後の char_fld4 の値は '2010320XXX' です。
C *LONGJUL0 MOVEL date_fld2 char_fld4
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
DName++++++++++ETDsFrom+++To/L+++IDc.Functions+++++++++++++++++++
*
* 可変長文字フィールドから可変長文字フィールドへの MOVEL の例
*
*
D var5a S 5A INZ('ABCDE') VARYING
D var5b S 5A INZ('ABCDE') VARYING
D var5c S 5A INZ('ABCDE') VARYING
D var10 S 10A INZ('0123456789') VARYING
D var15a S 15A INZ('FGH') VARYING
D var15b S 15A INZ('FGH') VARYING
*
*
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiL
*
C MOVEL var15a var5a
* var5a = 'FGHDE' (長さ =5)
C MOVEL var10 var5b
* var5b = '01234' (長さ =5)
C MOVEL var5c var15a
* var15a = 'ABC' (長さ =3)
C MOVEL var10 var15b
* var15b = '012' (長さ =3)
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
DName++++++++++ETDsFrom+++To/L+++IDc.Functions+++++++++++++++++++
*
* 可変長文字フィールドから固定長文字フィールドへの MOVEL の例
*
*
D var5 S 5A INZ('ABCDE') VARYING
D var10 S 10A INZ('0123456789') VARYING
D var15 S 15A INZ('FGH') VARYING
D fix5a S 5A INZ('MNOPQ')
D fix5b S 5A INZ('MNOPQ')
D fix5c S 5A INZ('MNOPQ')
D fix10 S 10A INZ('')
*
*
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiL
*
C MOVEL var5 fix5a
* fix5a = 'ABCDE'
C MOVEL var10 fix5b
* fix5b = '01234'
C MOVEL var15 fix5c
* fix5c = 'FGHPQ'
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
DName++++++++++ETDsFrom+++To/L+++IDc.Functions+++++++++++++++++++
*
* 固定長文字フィールドから可変長文字フィールドへの MOVEL の例
*
*
D var5 S 5A INZ('ABCDE') VARYING
D var10 S 10A INZ('0123456789') VARYING
D var15a S 15A INZ('FGHIJKLMNOPQR') VARYING
D var15b S 15A INZ('WXYZ') VARYING
D fix10 S 10A INZ('PQRSTUVWXY')
*
*
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiL
*
C MOVEL fix10 var5
* var5 = 'PQRST' (長さ =5)
C MOVEL fix10 var10
* var10 = 'PQRSTUVWXY' (長さ =10)
C MOVEL fix10 var15a
* var15a = 'PQRSTUVWXYPQR' (長さ =13)
C MOVEL fix10 var15b
* var15b = 'PQRS' (長さ =4)
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
DName++++++++++ETDsFrom+++To/L+++IDc.Functions+++++++++++++++++++
*
* 可変長文字フィールドから可変長文字フィールドへの MOVEL(P) の例
*
*
D var5a S 5A INZ('ABCDE') VARYING
D var5b S 5A INZ('ABCDE') VARYING
D var5c S 5A INZ('ABCDE') VARYING
D var10 S 10A INZ('0123456789') VARYING
D var15a S 15A INZ('FGH') VARYING
D var15b S 15A INZ('FGH') VARYING
D var15c S 15A INZ('FGHIJKLMN') VARYING
*
*
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiL
*
C MOVEL(P) var15a var5a
* var5a = 'FGH ' (長さ =5)
C MOVEL(P) var10 var5b
* var5b = '01234' (長さ =5)
C MOVEL(P) var5c var15b
* var15b = 'ABC' (長さ =3)
C MOVEL(P) var15a var15c
* var15c = 'FGH ' (長さ =9)
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
DName++++++++++ETDsFrom+++To/L+++IDc.Functions+++++++++++++++++++
*
* 可変長文字フィールドから固定長文字フィールドへの MOVEL(P) の例
*
*
D var5 S 5A INZ('ABCDE') VARYING
D var10 S 10A INZ('0123456789') VARYING
D var15 S 15A INZ('FGH') VARYING
D fix5a S 5A INZ('MNOPQ')
D fix5b S 5A INZ('MNOPQ')
D fix5c S 5A INZ('MNOPQ')
*
*
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiL
*
C MOVEL(P) var5 fix5a
* fix5a = 'ABCDE'
C MOVEL(P) var10 fix5b
* fix5b = '01234'
C MOVEL(P) var15 fix5c
* fix5c = 'FGH '
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
DName++++++++++ETDsFrom+++To/L+++IDc.Functions+++++++++++++++++++
*
* 固定長文字フィールドから可変長文字フィールドへの MOVEL(P) の例
*
*
D var5 S 5A INZ('ABCDE') VARYING
D var10 S 10A INZ('0123456789') VARYING
D var15a S 15A INZ('FGHIJKLMNOPQR') VARYING
D var15b S 15A INZ('FGH') VARYING
D fix5 S 10A INZ('.....')
D fix10 S 10A INZ('PQRSTUVWXY')
*
*
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiL
*
C MOVEL(P) fix10 var5
* var5 = 'PQRST' (長さ =5)
C MOVEL(P) fix5 var10
* var10 = '..... ' (長さ =10)
C MOVEL(P) fix10 var15a
* var15a = 'PQRSTUVWXY ' (長さ =13)
C MOVEL(P) fix10 var15b
* var15b = 'PQR' (長さ =3)