330125 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

記録

記録

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

プロフィール

うつにゃあ

うつにゃあ

カレンダー

カテゴリ

フリーページ

キーワードサーチ

▼キーワード検索

お気に入りブログ

カオスワールド 攻… ぱに〜にさん

KIYO Project ブログ @きよぴーさん
ぐうたらプーのブログ akyohomeさん
宝クガキ日記 uriagassieさん
ポケポケ! youns3522さん
2010年03月10日
XML
カテゴリ:コンピュータ

用意したものは、Borland C++ 5.5のmakeと、PL/I-86です。
PL/I-86の実行ファイル一式はc:\pli86\binに入っています。

--- Makefile ---

PLIBINPATH=c:\pli86\bin
SYSFILE=pli0.ovr pli1.ovr pli2.ovr
LIBFILE=plilib.l86
PROG=tensort

${PROG}.exe: ${PROG}.obj ${LIBFILE}
 link86 ${PROG},${LIBFILE}

${PROG}.obj: ${PROG}.pli ${SYSFILE}
 pli ${PROG}

pli0.ovr:
 copy ${PLIBINPATH}\$@ .

pli1.ovr:
 copy ${PLIBINPATH}\$@ .

pli2.ovr:
 copy ${PLIBINPATH}\$@ .

plilib.l86:
 copy ${PLIBINPATH}\$@ .

clean:
 -del ${PROG}.obj ${PROG}.sym ${SYSFILE} ${LIBFILE}

clobber:
 -del ${PROG}.exe ${PROG}.obj ${PROG}.sym ${SYSFILE} ${LIBFILE}

--- tensort.pli ---

 TENSORT: PROCEDURE OPTIONS(MAIN);
      DECLARE 1 KYOKA(5),
               2 NAME CHARACTER(6),
               2 TEN  FIXED(15);
      DECLARE GOKEI FIXED(15);
      DECLARE I FIXED(15);
      DECLARE J FIXED(15);

      NAME(1)='KOKUGO';
      NAME(2)='SUGAKU';
      NAME(3)='RIKA';
      NAME(4)='SHAKAI';
      NAME(5)='EIGO';

      DO I=1 TO 5 BY 1;
        PUT LIST (NAME(I),': TEN ? ');
        GET LIST(TEN(I));
      END;

      DO I=1 TO 5-1 BY 1;
        DO J=1+1 TO 5-I+1 BY 1;
          IF TEN(J)>TEN(J-1) THEN
            CALL SWAP(ADDR(KYOKA(J)),ADDR(KYOKA(J-1)));
        END;
      END;

      GOKEI=0;

      DO I=1 TO 5 BY 1;
        PUT SKIP LIST(NAME(I),':',TEN(I));
        GOKEI=GOKEI+TEN(I);
      END;

      PUT SKIP LIST('GOKEI ',':',GOKEI);

      RETURN;

 SWAP: PROCEDURE(K1,K2);
      DECLARE K1 POINTER;
      DECLARE K2 POINTER;
      DECLARE 1 KYOKA1 BASED(K1),
                2 K1NAME CHARACTER(6),
                2 K1TEN  FIXED(15);
      DECLARE 1 KYOKA2 BASED(K2),
                2 K2NAME CHARACTER(6),
                2 K2TEN  FIXED(15);
      DECLARE TMPNAME CHARACTER(6);
      DECLARE TMPTEN  FIXED(15);

      TMPNAME=K1NAME;
      K1NAME=K2NAME;
      K2NAME=TMPNAME;

      TMPTEN=K1TEN;
      K1TEN=K2TEN;
      K2TEN=TMPTEN;

      END SWAP;

      END TENSORT;

実行すると、社会、数学、 国語、理科、英語の点数をきいてくるので、入力すると、得点が高い順に一覧を出して、最後に合計点を出します。

--- 実行例 ---

C:\home\neko\src\tensort>tensort
KOKUGO : TEN ? 90
SUGAKU : TEN ? 100
RIKA   : TEN ? 98
SHAKAI : TEN ? 60
EIGO   : TEN ? 85

SUGAKU :       100
RIKA   :        98
KOKUGO :        90
EIGO   :        85
SHAKAI :        60
GOKEI  :       433
End of Execution
C:\home\neko\src\tensort>

SWAPプロシジャではポインタを使ってみました。
融通は利くけど、わかりにくくなりますね。






お気に入りの記事を「いいね!」で応援しよう

最終更新日  2010年03月11日 13時25分29秒
コメント(2) | コメントを書く
[コンピュータ] カテゴリの最新記事



© Rakuten Group, Inc.