9.220 STM_FILE_WRITE_CTL
この組み込み関数によって、データ・ストリームに行終了文字を書き込みます。
関連する組み込み関数:STM_FILE_OPEN、STM_FILE_CLOSE、STM_FILE_WRITE、STM_FILE_READ
各製品の対応
LANSA/AD |
使用可 |
Visual LANSA for Windows |
使用可 |
Visual LANSA for Linux |
使用可 |
引数
番号 |
タイプ |
必須/任意 |
記述 |
最小長 |
最大長 |
最小小数桁数 |
最大小数桁数 |
---|---|---|---|---|---|---|---|
1 |
N |
必須 |
行終了文字を書き込むファイルのファイル番号(ファイル・ハンドル) この番号は、STM_FILE_OPENによってストリーム・ファイルに割り当てられています。 |
1 |
3 |
0 |
0 |
2 |
A |
任意 |
書き込む行終了文字 有効な値は以下のとおりです。 |
1 |
10 |
戻り値
番号 |
タイプ |
必須/任意 |
記述 |
最小長 |
最大長 |
最小小数桁数 |
最大小数桁数 |
---|---|---|---|---|---|---|---|
2 |
A |
任意 |
戻りコード OK = 終了文字が書き込まれた ER = エラーが発生した |
2 |
2 |
例
このIBM iの例では、ストリーム・ファイルがIBM IFSに書き込まれます。ファイルは、ディレクトリ/tmpに書き込まれ、example2.txtという名前が付けられます。
データは、データベース・ファイルPSLMSTからの従業員番号の後に、その従業員のスキル・コードが続く形で書き込まれます。スキルは、コンマによって区切られます。従業員に関するデータの終わりは、次の例のように、復帰改行(CRLF)によって示されます。
A0001,ADVPGM,CS
A0008
A0013
A0090,CL,COBOL,ECD,INTRO,MANAGE1,MARKET2,MARKET3,MBA,RPG
開くときのオプションがLineTerminator=NONEのため、行終了文字は、STM_FILE_WRITEによって自動的に書き込まれません。行終了文字は、従業員に関する情報の最後にSTM_FILE_WRITE_CTLによって書き込まれます。
FUNCTION OPTIONS(*DIRECT)
**********
DEFINE FIELD(#FILENO) TYPE(*DEC) LENGTH(3) DECIMALS(0) DESC('Allocated file number')
DEFINE FIELD(#RETNCODE) TYPE(*CHAR) LENGTH(2)
DEFINE FIELD(#COMMA) TYPE(*CHAR) LENGTH(1) DEFAULT(',')
DEFINE FIELD(#OPTIONS) TYPE(*CHAR) LENGTH(256) DESC('Options for stream file open')
CHANGE FIELD(#OPTIONS) TO('''WRITE Text CodePage=819 LineTerminator=NONE''')
**********
USE BUILTIN(STM_FILE_OPEN) WITH_ARGS('''/tmp/example2.txt''' #OPTIONS) TO_GET(#FILENO #RETNCODE)
IF COND('#retncode *NE OK')
MESSAGE MSGTXT('Error occurred on OPEN')
RETURN
ENDIF
**********
********** Read file PSLMST and for each employee get his skills
********** Write to stream file employee no and list of skills
********** comma delimited. Terminate with a CRLF.
**********
SELECT FIELDS((#EMPNO)) FROM_FILE(PSLMST)
USE BUILTIN(STM_FILE_WRITE) WITH_ARGS(#FILENO #EMPNO) TO_GET(#RETNCODE)
**********
SELECT FIELDS((#SKILCODE)) FROM_FILE(PSLSKL) WITH_KEY(#EMPNO)
USE BUILTIN(STM_FILE_WRITE) WITH_ARGS(#FILENO #COMMA #SKILCODE) TO_GET(#RETNCODE)
ENDSELECT
********** Add line terminator at end of details for employee
USE BUILTIN(STM_FILE_WRITE_CTL) WITH_ARGS(#FILENO CRLF) TO_GET(#RETNCODE)
ENDSELECT
**********
********** Close stream file and finish
**********
USE BUILTIN(STM_FILE_CLOSE) WITH_ARGS(#FILENO)
RETURN