なんちゃって掲示板
2003/02/17
COBOLで掲示板を作成してみました。Perlのなんちゃって版なので「なんちゃって掲示板」と命名致しました。
現地点では全くシンプルな掲示板です。今後機能追加する予定です。まだまだ開発途中での公開ですので
不要なコーディングも御座います。また とりあえず今は100件までしか表示できません。
また もしかしたらバグを含んでいるかも知れません。(発見された方はこちら迄ご一報いただければ有難いです)
デコード部分はチャット版のデコードプログラムをバージョンアップ致しました。
まだ改良する個所は沢山あるのですが、とりあえずVer0.1の形で公開いたします。
ご自由にソースを改良して頂いて使用して頂いても結構なのですが、当プログラムを使用した事による、不具合、トラブル等 一切の責任は持ちませんので、その点ご理解の上ご使用ください。
| 利用環境 | |
| OS | Red Hat Linux 7.2 |
| HTTPサーバー | APACHE |
| COBOL | OpenCOBOL 0.9.7 |
| なんちゃって掲示板 ソース 不要なワーク定義やセクションも有りますが今後のVerUP用です。 |
IDENTIFICATION DIVISION.
PROGRAM-ID. BBS02.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT BBSDAT ASSIGN TO "bbs01.dat"
ORGANIZATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD BBSDAT
DATA RECORD IS REC-A.
01 REC-A.
03 REC-A-NAME PIC X(14).
03 REC-A-MAIL PIC X(30).
03 REC-A-DATE PIC X(06).
03 REC-A-TIME PIC X(08).
03 REC-A-NAIYO PIC X(2000).
WORKING-STORAGE SECTION.
01 WK-INDAT PIC X(2146).
01 WK-INNAME.
03 FILLER PIC X(005).
03 WK-INNAMEX PIC X(60).
01 WK-INMAIL.
03 FILLER PIC X(005).
03 WK-INMAILX PIC X(60).
01 WK-INNAIYO.
03 FILLER PIC X(005).
03 WK-INNAIYOX PIC X(2000).
01 WK-NAME.
03 FILLER PIC X(005).
03 WK-NAMEX PIC X(060).
01 WK-MAIL.
03 FILLER PIC X(005).
03 WK-MAILX PIC X(060).
01 WK-NAIYO.
03 FILLER PIC X(005).
03 WK-NAIYOX PIC X(2000).
01 WK-COLOR.
03 FILLER PIC X(006).
03 WK-COLORX PIC X(006).
01 WK-FIRST.
03 FILLER PIC X(006).
03 WK-FIRSTX PIC X(005).
01 WK-BLK PIC X(007).
01 WK-BLU PIC X(007).
01 WK-RED PIC X(007).
01 WK-GRE PIC X(007).
01 WK-BRA PIC X(007).
01 WK-PUR PIC X(007).
01 WK-DATE PIC X(06).
01 WK-DDATE PIC X(08).
01 WK-DTIME PIC X(08).
01 WK-TIME PIC X(08).
01 I PIC S9(03) VALUE ZERO.
01 J PIC S9(03) VALUE ZERO.
01 K PIC S9(03) VALUE ZERO.
01 FILLER.
03 TBL-A OCCURS 100.
05 TBL-A-NAME PIC X(14).
05 TBL-A-MAIL PIC X(30).
05 TBL-A-DATE PIC X(06).
05 TBL-A-TIME PIC X(08).
05 TBL-A-NAIYO PIC X(2000).
PROCEDURE DIVISION.
******************************************************************
*
******************************************************************
A000-MAIN.
PERFORM X010-INIT.
PERFORM A100-SYORI.
PERFORM X090-END.
STOP RUN.
******************************************************************
*
******************************************************************
A100-SYORI SECTION.
A100-000.
A100-999.
EXIT.
******************************************************************
*
******************************************************************
X010-INIT SECTION.
X010-000.
MOVE SPACE TO WK-NAME WK-MAIL WK-NAIYO
WK-INNAME WK-INMAIL WK-FIRST
WK-INNAIYO WK-INDAT.
ACCEPT WK-INDAT.
UNSTRING WK-INDAT DELIMITED BY "&"
INTO WK-INNAME WK-INMAIL WK-INNAIYO WK-FIRST.
CALL "decode2" USING WK-INNAMEX WK-NAMEX.
CALL "decode2" USING WK-INMAILX WK-MAILX.
CALL "decode2" USING WK-INNAIYOX WK-NAIYOX.
INSPECT WK-NAMEX REPLACING ALL "+" BY " ".
INSPECT WK-MAILX REPLACING ALL "+" BY " ".
INSPECT WK-NAIYOX REPLACING ALL "+" BY " ".
IF WK-FIRST = SPACE
MOVE SPACE TO WK-NAMEX
WK-MAILX
WK-NAIYOX
ELSE
IF (WK-NAMEX = SPACE) OR
(WK-MAILX = SPACE)
PERFORM X900-ERR1
ELSE
IF WK-NAIYOX = SPACE
PERFORM X910-ERR2
ELSE
PERFORM X200-WRITE
END-IF
END-IF
END-IF.
DISPLAY 'Content-type: text/html'.
DISPLAY.
DISPLAY '<HTML>'.
DISPLAY '<HEAD>'.
DISPLAY '<TITLE>COBOL掲示板</TITLE>'.
DISPLAY '</HEAD>'.
DISPLAY '<BODY BGCOLOR="#D7EEFF" TEXT="#000000">'
'<CENTER>'.
DISPLAY '<IMG src="../at.gif"><BR>'.
DISPLAY '<FONT SIZE="5" COLOR="RED"><B>'.
DISPLAY 'なんちゃって掲示板'.
DISPLAY '</FONT></B><br>'.
DISPLAY 'この掲示板は全てCOBOLで作成されております<BR>'.
DISPLAY 'なんなりと ご自由に書込み下さい</CENTER>'.
DISPLAY '<FORM method="POST"'
' action="../cgi-bin/bbs02">'.
DISPLAY '<BR>'.
DISPLAY ' お名前:'.
DISPLAY '<INPUT size="20" type="text" name="name"'
' VALUE="'
WK-NAMEX
'"><BR>'.
DISPLAY 'メールアドレス:'.
DISPLAY '<INPUT size="30" type="text" name="mail"'
' VALUE="'
WK-MAILX
'"><BR><BR>'.
DISPLAY ' 内容:<BR>'.
DISPLAY ' '.
DISPLAY '<TEXTAREA cols="80" rows="5" name="data">'
'</TEXTAREA><BR>'.
DISPLAY '<BR><INPUT type="submit" value=" 書込み ">'.
DISPLAY '<INPUT type="hidden" name="first"'
' value="11111" >'.
DISPLAY '</FORM>'.
DISPLAY '<HR><BR><BR>'.
DISPLAY '<HR><BR><BR>'.
X010-100.
OPEN INPUT BBSDAT.
MOVE ZERO TO K.
DISPLAY '<TABLE>'.
PERFORM X300-DISP.
DISPLAY '</TABLE>'.
CLOSE BBSDAT.
X010-200.
DISPLAY '<HR>'.
DISPLAY '</BODY>'.
DISPLAY '</HTML>'.
X010-999.
EXIT.
**************************************************************
* 終了処理
**************************************************************
X090-END SECTION.
X090-000.
X090-999.
EXIT.
**************************************************************
*
**************************************************************
X200-WRITE SECTION.
X200-000.
OPEN EXTEND BBSDAT.
ACCEPT WK-DATE FROM DATE.
ACCEPT WK-TIME FROM TIME.
MOVE WK-NAMEX TO REC-A-NAME.
MOVE WK-MAILX TO REC-A-MAIL.
MOVE WK-NAIYOX TO REC-A-NAIYO.
MOVE WK-DATE TO REC-A-DATE.
MOVE WK-TIME TO REC-A-TIME.
WRITE REC-A.
CLOSE BBSDAT.
X200-999.
EXIT.
**************************************************************
*
**************************************************************
X300-DISP SECTION.
X300-000.
READ BBSDAT AT END
GO TO X300-100.
ADD 1 TO K.
IF K > 100
GO TO X300-100.
MOVE REC-A TO TBL-A(K).
GO TO X300-000.
X300-100.
IF K < 1
GO TO X300-999.
DISPLAY '<TR>'.
DISPLAY '<TD>'.
DISPLAY 'お名前:<FONT COLOR="#FF0000">'.
DISPLAY '<A HREF="mailto:'.
DISPLAY TBL-A-MAIL (K).
DISPLAY '">'.
DISPLAY TBL-A-NAME (K).
DISPLAY "</A>".
DISPLAY '<TD>'.
DISPLAY " ".
MOVE TBL-A-DATE (K) (1:2) TO WK-DDATE(1:2).
MOVE "/" TO WK-DDATE(3:1).
MOVE TBL-A-DATE (K) (3:2) TO WK-DDATE(4:2).
MOVE "/" TO WK-DDATE(6:1).
MOVE TBL-A-DATE (K) (5:2) TO WK-DDATE(7:2).
DISPLAY '</FONT><FONT SIZE=2 COLOR="#337777">'.
DISPLAY WK-DDATE.
MOVE TBL-A-TIME (K) (1:2) TO WK-DTIME(1:2).
MOVE ":" TO WK-DTIME(3:1).
MOVE TBL-A-TIME (K) (3:2) TO WK-DTIME(4:2).
MOVE ":" TO WK-DTIME(6:1).
MOVE TBL-A-TIME (K) (5:2) TO WK-DTIME(7:2).
DISPLAY WK-DTIME.
DISPLAY '</TR>'.
DISPLAY '</FONT>'.
DISPLAY '<TR>'.
DISPLAY '<TD COLSPAN="2" bgcolor="ffffff">'.
DISPLAY TBL-A-NAIYO (K).
DISPLAY '</TR>'.
COMPUTE K = K - 1.
GO TO X300-100.
X300-999.
EXIT.
******************************************************************
*
******************************************************************
X900-ERR1 SECTION.
X900-000.
DISPLAY 'Content-type: text/html'.
DISPLAY.
DISPLAY '<HTML>'.
DISPLAY '<HEAD>'.
DISPLAY '<TITLE>エラー</TITLE>'.
DISPLAY '</HEAD>'.
DISPLAY '<BODY BGCOLOR="#FFFFFF" TEXT="#000000">'
'<CENTER>'.
DISPLAY '<FONT SIZE="4" COLOR="RED"><B>'.
DISPLAY 'お名前とメールアドレスを入力してね!!'.
DISPLAY '</FONT><BR>'.
DISPLAY '<A HREF=http://coboler.no-ip.com/cgi-bin/bbs02>'.
DISPLAY '戻る</A>'.
DISPLAY '</CENTER>'.
DISPLAY '</BODY>'.
DISPLAY '</HTML>'.
STOP RUN.
X900-999.
EXIT.
******************************************************************
*
******************************************************************
X910-ERR2 SECTION.
X910-000.
DISPLAY 'Content-type: text/html'.
DISPLAY.
DISPLAY '<HTML>'.
DISPLAY '<HEAD>'.
DISPLAY '<TITLE>エラー</TITLE>'.
DISPLAY '</HEAD>'.
DISPLAY '<BODY BGCOLOR="#FFFFFF" TEXT="#000000">'
'<CENTER>'.
DISPLAY '<FONT SIZE="4" COLOR="RED"><B>'.
DISPLAY '何か書いてね!!'.
DISPLAY '</FONT><BR>'.
DISPLAY '<A HREF=http://coboler.no-ip.com/cgi-bin/bbs02>'.
DISPLAY '戻る</A>'.
DISPLAY '</CENTER>'.
DISPLAY '</BODY>'.
DISPLAY '</HTML>'.
STOP RUN.
X910-999.
EXIT.
|
| デコード サブプログラム |
IDENTIFICATION DIVISION.
PROGRAM-ID. decode2.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WK-INTBL PIC X(2000).
01 WK-INTBLR REDEFINES WK-INTBL.
03 WK-INR PIC X(01) OCCURS 2000.
01 WK-OUTTBL.
03 WK-OUT PIC X(01) OCCURS 2000.
01 WK-IDX PIC 9(03).
01 IX PIC 9(04) VALUE ZERO.
01 IX2 PIC 9(04) VALUE ZERO.
01 SW-DECODE PIC 9(01) VALUE ZERO.
01 WK-CNT PIC 9(03) VALUE ZERO.
01 WK-HEN.
03 WK-HEN1 PIC X(01).
03 WK-HEN2 PIC X(01).
01 WK-HEXTBL.
03 WK-IN10VAL.
05 FILLER PIC X(32) VALUE
'000102030405060708090A0B0C0D0E0F'.
05 FILLER PIC X(32) VALUE
'101112131415161718191A1B1C1D1E1F'.
05 FILLER PIC X(32) VALUE
'202122232425262728292A2B2C2D2E2F'.
05 FILLER PIC X(32) VALUE
'303132333435363738393A3B3C3D3E3F'.
05 FILLER PIC X(32) VALUE
'404142434445464748494A4B4C4D4E4F'.
05 FILLER PIC X(32) VALUE
'505152535455565758595A5B5C5D5E5F'.
05 FILLER PIC X(32) VALUE
'606162636465666768696A6B6C6D6E6F'.
05 FILLER PIC X(32) VALUE
'707172737475767778797A7B7C7D7E7F'.
05 FILLER PIC X(32) VALUE
'808182838485868788898A8B8C8D8E8F'.
05 FILLER PIC X(32) VALUE
'909192939495969798999A9B9C9D9E9F'.
05 FILLER PIC X(32) VALUE
'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF'.
05 FILLER PIC X(32) VALUE
'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF'.
05 FILLER PIC X(32) VALUE
'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF'.
05 FILLER PIC X(32) VALUE
'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF'.
05 FILLER PIC X(32) VALUE
'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF'.
05 FILLER PIC X(32) VALUE
'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'.
03 WK-IN10T REDEFINES WK-IN10VAL.
05 WK-IN10 PIC X(02) OCCURS 256 INDEXED BY IDX.
03 WK-IN16VAL.
05 FILLER PIC X(01) VALUE X'00'.
05 FILLER PIC X(01) VALUE X'01'.
05 FILLER PIC X(01) VALUE X'02'.
05 FILLER PIC X(01) VALUE X'03'.
05 FILLER PIC X(01) VALUE X'04'.
05 FILLER PIC X(01) VALUE X'05'.
05 FILLER PIC X(01) VALUE X'06'.
05 FILLER PIC X(01) VALUE X'07'.
05 FILLER PIC X(01) VALUE X'08'.
05 FILLER PIC X(01) VALUE X'09'.
05 FILLER PIC X(01) VALUE X'0A'.
05 FILLER PIC X(01) VALUE X'0B'.
05 FILLER PIC X(01) VALUE X'0C'.
05 FILLER PIC X(01) VALUE X'0D'.
05 FILLER PIC X(01) VALUE X'0E'.
05 FILLER PIC X(01) VALUE X'0F'.
05 FILLER PIC X(01) VALUE X'10'.
05 FILLER PIC X(01) VALUE X'11'.
05 FILLER PIC X(01) VALUE X'12'.
05 FILLER PIC X(01) VALUE X'13'.
05 FILLER PIC X(01) VALUE X'14'.
05 FILLER PIC X(01) VALUE X'15'.
05 FILLER PIC X(01) VALUE X'16'.
05 FILLER PIC X(01) VALUE X'17'.
05 FILLER PIC X(01) VALUE X'18'.
05 FILLER PIC X(01) VALUE X'19'.
05 FILLER PIC X(01) VALUE X'1A'.
05 FILLER PIC X(01) VALUE X'1B'.
05 FILLER PIC X(01) VALUE X'1C'.
05 FILLER PIC X(01) VALUE X'1D'.
05 FILLER PIC X(01) VALUE X'1E'.
05 FILLER PIC X(01) VALUE X'1F'.
05 FILLER PIC X(01) VALUE X'20'.
05 FILLER PIC X(01) VALUE X'21'.
05 FILLER PIC X(01) VALUE X'22'.
05 FILLER PIC X(01) VALUE X'23'.
05 FILLER PIC X(01) VALUE X'24'.
05 FILLER PIC X(01) VALUE X'25'.
05 FILLER PIC X(01) VALUE X'26'.
05 FILLER PIC X(01) VALUE X'27'.
05 FILLER PIC X(01) VALUE X'28'.
05 FILLER PIC X(01) VALUE X'29'.
05 FILLER PIC X(01) VALUE X'2A'.
05 FILLER PIC X(01) VALUE X'2B'.
05 FILLER PIC X(01) VALUE X'2C'.
05 FILLER PIC X(01) VALUE X'2D'.
05 FILLER PIC X(01) VALUE X'2E'.
05 FILLER PIC X(01) VALUE X'2F'.
05 FILLER PIC X(01) VALUE X'30'.
05 FILLER PIC X(01) VALUE X'31'.
05 FILLER PIC X(01) VALUE X'32'.
05 FILLER PIC X(01) VALUE X'33'.
05 FILLER PIC X(01) VALUE X'34'.
05 FILLER PIC X(01) VALUE X'35'.
05 FILLER PIC X(01) VALUE X'36'.
05 FILLER PIC X(01) VALUE X'37'.
05 FILLER PIC X(01) VALUE X'38'.
05 FILLER PIC X(01) VALUE X'39'.
05 FILLER PIC X(01) VALUE X'3A'.
05 FILLER PIC X(01) VALUE X'3B'.
05 FILLER PIC X(01) VALUE X'3C'.
05 FILLER PIC X(01) VALUE X'3D'.
05 FILLER PIC X(01) VALUE X'3E'.
05 FILLER PIC X(01) VALUE X'3F'.
05 FILLER PIC X(01) VALUE X'40'.
05 FILLER PIC X(01) VALUE X'41'.
05 FILLER PIC X(01) VALUE X'42'.
05 FILLER PIC X(01) VALUE X'43'.
05 FILLER PIC X(01) VALUE X'44'.
05 FILLER PIC X(01) VALUE X'45'.
05 FILLER PIC X(01) VALUE X'46'.
05 FILLER PIC X(01) VALUE X'47'.
05 FILLER PIC X(01) VALUE X'48'.
05 FILLER PIC X(01) VALUE X'49'.
05 FILLER PIC X(01) VALUE X'4A'.
05 FILLER PIC X(01) VALUE X'4B'.
05 FILLER PIC X(01) VALUE X'4C'.
05 FILLER PIC X(01) VALUE X'4D'.
05 FILLER PIC X(01) VALUE X'4E'.
05 FILLER PIC X(01) VALUE X'4F'.
05 FILLER PIC X(01) VALUE X'50'.
05 FILLER PIC X(01) VALUE X'51'.
05 FILLER PIC X(01) VALUE X'52'.
05 FILLER PIC X(01) VALUE X'53'.
05 FILLER PIC X(01) VALUE X'54'.
05 FILLER PIC X(01) VALUE X'55'.
05 FILLER PIC X(01) VALUE X'56'.
05 FILLER PIC X(01) VALUE X'57'.
05 FILLER PIC X(01) VALUE X'58'.
05 FILLER PIC X(01) VALUE X'59'.
05 FILLER PIC X(01) VALUE X'5A'.
05 FILLER PIC X(01) VALUE X'5B'.
05 FILLER PIC X(01) VALUE X'5C'.
05 FILLER PIC X(01) VALUE X'5D'.
05 FILLER PIC X(01) VALUE X'5E'.
05 FILLER PIC X(01) VALUE X'5F'.
05 FILLER PIC X(01) VALUE X'60'.
05 FILLER PIC X(01) VALUE X'61'.
05 FILLER PIC X(01) VALUE X'62'.
05 FILLER PIC X(01) VALUE X'63'.
05 FILLER PIC X(01) VALUE X'64'.
05 FILLER PIC X(01) VALUE X'65'.
05 FILLER PIC X(01) VALUE X'66'.
05 FILLER PIC X(01) VALUE X'67'.
05 FILLER PIC X(01) VALUE X'68'.
05 FILLER PIC X(01) VALUE X'69'.
05 FILLER PIC X(01) VALUE X'6A'.
05 FILLER PIC X(01) VALUE X'6B'.
05 FILLER PIC X(01) VALUE X'6C'.
05 FILLER PIC X(01) VALUE X'6D'.
05 FILLER PIC X(01) VALUE X'6E'.
05 FILLER PIC X(01) VALUE X'6F'.
05 FILLER PIC X(01) VALUE X'70'.
05 FILLER PIC X(01) VALUE X'71'.
05 FILLER PIC X(01) VALUE X'72'.
05 FILLER PIC X(01) VALUE X'73'.
05 FILLER PIC X(01) VALUE X'74'.
05 FILLER PIC X(01) VALUE X'75'.
05 FILLER PIC X(01) VALUE X'76'.
05 FILLER PIC X(01) VALUE X'77'.
05 FILLER PIC X(01) VALUE X'78'.
05 FILLER PIC X(01) VALUE X'79'.
05 FILLER PIC X(01) VALUE X'7A'.
05 FILLER PIC X(01) VALUE X'7B'.
05 FILLER PIC X(01) VALUE X'7C'.
05 FILLER PIC X(01) VALUE X'7D'.
05 FILLER PIC X(01) VALUE X'7E'.
05 FILLER PIC X(01) VALUE X'7F'.
05 FILLER PIC X(01) VALUE X'80'.
05 FILLER PIC X(01) VALUE X'81'.
05 FILLER PIC X(01) VALUE X'82'.
05 FILLER PIC X(01) VALUE X'83'.
05 FILLER PIC X(01) VALUE X'84'.
05 FILLER PIC X(01) VALUE X'85'.
05 FILLER PIC X(01) VALUE X'86'.
05 FILLER PIC X(01) VALUE X'87'.
05 FILLER PIC X(01) VALUE X'88'.
05 FILLER PIC X(01) VALUE X'89'.
05 FILLER PIC X(01) VALUE X'8A'.
05 FILLER PIC X(01) VALUE X'8B'.
05 FILLER PIC X(01) VALUE X'8C'.
05 FILLER PIC X(01) VALUE X'8D'.
05 FILLER PIC X(01) VALUE X'8E'.
05 FILLER PIC X(01) VALUE X'8F'.
05 FILLER PIC X(01) VALUE X'90'.
05 FILLER PIC X(01) VALUE X'91'.
05 FILLER PIC X(01) VALUE X'92'.
05 FILLER PIC X(01) VALUE X'93'.
05 FILLER PIC X(01) VALUE X'94'.
05 FILLER PIC X(01) VALUE X'95'.
05 FILLER PIC X(01) VALUE X'96'.
05 FILLER PIC X(01) VALUE X'97'.
05 FILLER PIC X(01) VALUE X'98'.
05 FILLER PIC X(01) VALUE X'99'.
05 FILLER PIC X(01) VALUE X'9A'.
05 FILLER PIC X(01) VALUE X'9B'.
05 FILLER PIC X(01) VALUE X'9C'.
05 FILLER PIC X(01) VALUE X'9D'.
05 FILLER PIC X(01) VALUE X'9E'.
05 FILLER PIC X(01) VALUE X'9F'.
05 FILLER PIC X(01) VALUE X'A0'.
05 FILLER PIC X(01) VALUE X'A1'.
05 FILLER PIC X(01) VALUE X'A2'.
05 FILLER PIC X(01) VALUE X'A3'.
05 FILLER PIC X(01) VALUE X'A4'.
05 FILLER PIC X(01) VALUE X'A5'.
05 FILLER PIC X(01) VALUE X'A6'.
05 FILLER PIC X(01) VALUE X'A7'.
05 FILLER PIC X(01) VALUE X'A8'.
05 FILLER PIC X(01) VALUE X'A9'.
05 FILLER PIC X(01) VALUE X'AA'.
05 FILLER PIC X(01) VALUE X'AB'.
05 FILLER PIC X(01) VALUE X'AC'.
05 FILLER PIC X(01) VALUE X'AD'.
05 FILLER PIC X(01) VALUE X'AE'.
05 FILLER PIC X(01) VALUE X'AF'.
05 FILLER PIC X(01) VALUE X'B0'.
05 FILLER PIC X(01) VALUE X'B1'.
05 FILLER PIC X(01) VALUE X'B2'.
05 FILLER PIC X(01) VALUE X'B3'.
05 FILLER PIC X(01) VALUE X'B4'.
05 FILLER PIC X(01) VALUE X'B5'.
05 FILLER PIC X(01) VALUE X'B6'.
05 FILLER PIC X(01) VALUE X'B7'.
05 FILLER PIC X(01) VALUE X'B8'.
05 FILLER PIC X(01) VALUE X'B9'.
05 FILLER PIC X(01) VALUE X'BA'.
05 FILLER PIC X(01) VALUE X'BB'.
05 FILLER PIC X(01) VALUE X'BC'.
05 FILLER PIC X(01) VALUE X'BD'.
05 FILLER PIC X(01) VALUE X'BE'.
05 FILLER PIC X(01) VALUE X'BF'.
05 FILLER PIC X(01) VALUE X'C0'.
05 FILLER PIC X(01) VALUE X'C1'.
05 FILLER PIC X(01) VALUE X'C2'.
05 FILLER PIC X(01) VALUE X'C3'.
05 FILLER PIC X(01) VALUE X'C4'.
05 FILLER PIC X(01) VALUE X'C5'.
05 FILLER PIC X(01) VALUE X'C6'.
05 FILLER PIC X(01) VALUE X'C7'.
05 FILLER PIC X(01) VALUE X'C8'.
05 FILLER PIC X(01) VALUE X'C9'.
05 FILLER PIC X(01) VALUE X'CA'.
05 FILLER PIC X(01) VALUE X'CB'.
05 FILLER PIC X(01) VALUE X'CC'.
05 FILLER PIC X(01) VALUE X'CD'.
05 FILLER PIC X(01) VALUE X'CE'.
05 FILLER PIC X(01) VALUE X'CF'.
05 FILLER PIC X(01) VALUE X'D0'.
05 FILLER PIC X(01) VALUE X'D1'.
05 FILLER PIC X(01) VALUE X'D2'.
05 FILLER PIC X(01) VALUE X'D3'.
05 FILLER PIC X(01) VALUE X'D4'.
05 FILLER PIC X(01) VALUE X'D5'.
05 FILLER PIC X(01) VALUE X'D6'.
05 FILLER PIC X(01) VALUE X'D7'.
05 FILLER PIC X(01) VALUE X'D8'.
05 FILLER PIC X(01) VALUE X'D9'.
05 FILLER PIC X(01) VALUE X'DA'.
05 FILLER PIC X(01) VALUE X'DB'.
05 FILLER PIC X(01) VALUE X'DC'.
05 FILLER PIC X(01) VALUE X'DD'.
05 FILLER PIC X(01) VALUE X'DE'.
05 FILLER PIC X(01) VALUE X'DF'.
05 FILLER PIC X(01) VALUE X'E0'.
05 FILLER PIC X(01) VALUE X'E1'.
05 FILLER PIC X(01) VALUE X'E2'.
05 FILLER PIC X(01) VALUE X'E3'.
05 FILLER PIC X(01) VALUE X'E4'.
05 FILLER PIC X(01) VALUE X'E5'.
05 FILLER PIC X(01) VALUE X'E6'.
05 FILLER PIC X(01) VALUE X'E7'.
05 FILLER PIC X(01) VALUE X'E8'.
05 FILLER PIC X(01) VALUE X'E9'.
05 FILLER PIC X(01) VALUE X'EA'.
05 FILLER PIC X(01) VALUE X'EB'.
05 FILLER PIC X(01) VALUE X'EC'.
05 FILLER PIC X(01) VALUE X'ED'.
05 FILLER PIC X(01) VALUE X'EE'.
05 FILLER PIC X(01) VALUE X'EF'.
05 FILLER PIC X(01) VALUE X'F0'.
05 FILLER PIC X(01) VALUE X'F1'.
05 FILLER PIC X(01) VALUE X'F2'.
05 FILLER PIC X(01) VALUE X'F3'.
05 FILLER PIC X(01) VALUE X'F4'.
05 FILLER PIC X(01) VALUE X'F5'.
05 FILLER PIC X(01) VALUE X'F6'.
05 FILLER PIC X(01) VALUE X'F7'.
05 FILLER PIC X(01) VALUE X'F8'.
05 FILLER PIC X(01) VALUE X'F9'.
05 FILLER PIC X(01) VALUE X'FA'.
05 FILLER PIC X(01) VALUE X'FB'.
05 FILLER PIC X(01) VALUE X'FC'.
05 FILLER PIC X(01) VALUE X'FD'.
05 FILLER PIC X(01) VALUE X'FE'.
05 FILLER PIC X(01) VALUE X'FF'.
03 WK-IN16T REDEFINES WK-IN16VAL.
05 WK-IN16 PIC X(01) OCCURS 256.
LINKAGE SECTION.
01 LN-IN PIC X(2000).
01 LN-OUT PIC X(2000).
PROCEDURE DIVISION USING LN-IN LN-OUT.
A000-SHORI.
MOVE ZERO TO IX2
SW-DECODE.
MOVE SPACE TO WK-OUTTBL.
MOVE LN-IN TO WK-INTBL.
PERFORM X100-SET VARYING IX FROM 1 BY 1
UNTIL IX > 1999.
MOVE WK-OUTTBL TO LN-OUT.
EXIT-PROGRAM.
******************************************************************
* *
******************************************************************
X100-SET SECTION.
X100-000.
IF WK-INR(IX) = "%"
MOVE 1 TO SW-DECODE
MOVE ZERO TO WK-CNT
ELSE
IF SW-DECODE = 1
ADD 1 TO WK-CNT
IF WK-CNT = 2
MOVE WK-INR(IX) TO WK-HEN2
MOVE ZERO TO SW-DECODE
IF WK-HEN = '0D'
ADD 1 TO IX2
MOVE '<' TO WK-OUT(IX2)
ADD 1 TO IX2
MOVE 'B' TO WK-OUT(IX2)
GO TO X100-999
END-IF
IF WK-HEN = '0A'
ADD 1 TO IX2
MOVE 'R' TO WK-OUT(IX2)
ADD 1 TO IX2
MOVE '>' TO WK-OUT(IX2)
GO TO X100-999
END-IF
SET IDX TO 1
SEARCH WK-IN10 VARYING IDX
AT END
ADD 1 TO IX2
MOVE ' ' TO WK-OUT(IX2)
WHEN WK-HEN = WK-IN10 (IDX)
SET WK-IDX TO IDX
END-SEARCH
ADD 1 TO IX2
MOVE WK-IN16(WK-IDX) TO WK-OUT(IX2)
ELSE
IF WK-CNT = 1
MOVE WK-INR(IX) TO WK-HEN1
ELSE
NEXT SENTENCE
ELSE
ADD 1 TO IX2
MOVE WK-INR(IX) TO WK-OUT(IX2).
X100-999.
EXIT.
|
| OPEN COBOLコンパイル方法 |
| cobc -c -static -main bbs02.cob cobc -c -static decode2.cob cobc -o bbs02 bbs02.o decode2.o |