お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"日本十進分類変換{2}"



#540で「数学」が「政治」と間違っていたので訂正します。



日本十進分類(NDC)番号から分野名を返す手続きです。

NDC番号(半角文字列)を渡すと1次区分はTStringListの[0]行目に、
2次区分はTStringListの[1]行目にそれぞれ返されます。
無効な引数が渡されたときは、それぞれ '' を返します。

//日本十進分類(NDC)番号から分野名を返す手続き
procedure NDCToField(NDC:String; Result:TStringList);
begin
  if Result = nil then
    Result:= TStringList.Create;

  Result.Clear;
  Result.Add('');
  Result.Add('');

  if Length(NDC) > 0 then
    case NDC[1] of
      '0': Result[0]:='総記';
      '1': Result[0]:='哲学';
      '2': Result[0]:='歴史';
      '3': Result[0]:='社会科学';
      '4': Result[0]:='自然科学';
      '5': Result[0]:='工学・技術';
      '6': Result[0]:='産業';
      '7': Result[0]:='芸術';
      '8': Result[0]:='語学';
      '9': Result[0]:='文学';
    end
  else
    Exit;

  if (Length(NDC) > 1) and (NDC[1] = '0') then
    case NDC[2] of
      '1': Result[1]:='図書館';
      '2': Result[1]:='図書・書誌学';
      '3': Result[1]:='百科事典';
      '4': Result[1]:='一般論文集・講演集・雑書';
      '5': Result[1]:='逐次刊行物';
      '6': Result[1]:='学会・博物館';
      '7': Result[1]:='新聞・ジャーナリズム';
      '8': Result[1]:='双書・全集';
      '9': Result[1]:='郷土資料';
    end;

  if (Length(NDC) > 1) and (NDC[1] = '1') then
    case NDC[2] of
      '1': Result[1]:='哲学各論';
      '2': Result[1]:='東洋思想';
      '3': Result[1]:='西洋哲学';
      '4': Result[1]:='心理学';
      '5': Result[1]:='倫理学';
      '6': Result[1]:='宗教';
      '7': Result[1]:='神道';
      '8': Result[1]:='仏教';
      '9': Result[1]:='キリスト教';
    end;

  if (Length(NDC) > 1) and (NDC[1] = '2') then
    case NDC[2] of
      '1': Result[1]:='日本';
      '2': Result[1]:='アジア';
      '3': Result[1]:='ヨーロッパ';
      '4': Result[1]:='アフリカ';
      '5': Result[1]:='北アメリカ';
      '6': Result[1]:='南アメリカ';
      '7': Result[1]:='オセアニア';
      '8': Result[1]:='伝記';
      '9': Result[1]:='地理';
    end;

  if (Length(NDC) > 1) and (NDC[1] = '3') then
    case NDC[2] of
      '1': Result[1]:='政治';
      '2': Result[1]:='法律';
      '3': Result[1]:='経済';
      '4': Result[1]:='財政';
      '5': Result[1]:='統計';
      '6': Result[1]:='社会学・社会問題';
      '7': Result[1]:='教育';
      '8': Result[1]:='風俗習慣・民俗学';
      '9': Result[1]:='国防・軍事';
    end;

  if (Length(NDC) > 1) and (NDC[1] = '4') then
    case NDC[2] of
      '1': Result[1]:='数学';
      '2': Result[1]:='物理学';
      '3': Result[1]:='化学';
      '4': Result[1]:='天文学';
      '5': Result[1]:='地学';
      '6': Result[1]:='生物学・博物学';
      '7': Result[1]:='植物学';
      '8': Result[1]:='動物学';
      '9': Result[1]:='医学・薬学';
    end;

  if (Length(NDC) > 1) and (NDC[1] = '5') then
    case NDC[2] of
      '1': Result[1]:='土木工学';
      '2': Result[1]:='建築学';
      '3': Result[1]:='機械工学';
      '4': Result[1]:='電気工学';
      '5': Result[1]:='海事工学';
      '6': Result[1]:='金属工学';
      '7': Result[1]:='化学工学';
      '8': Result[1]:='製造工業';
      '9': Result[1]:='家事';
    end;

  if (Length(NDC) > 1) and (NDC[1] = '6') then
    case NDC[2] of
      '1': Result[1]:='農業・農学';
      '2': Result[1]:='園芸・造園';
      '3': Result[1]:='蚕糸業';
      '4': Result[1]:='畜産業・獣医学';
      '5': Result[1]:='林業';
      '6': Result[1]:='水産業';
      '7': Result[1]:='商業';
      '8': Result[1]:='交通';
      '9': Result[1]:='通信';
    end;

  if (Length(NDC) > 1) and (NDC[1] = '7') then
    case NDC[2] of
      '1': Result[1]:='彫刻';
      '2': Result[1]:='絵画・書道';
      '3': Result[1]:='版画';
      '4': Result[1]:='写真術・印刷';
      '5': Result[1]:='工芸';
      '6': Result[1]:='音楽・舞踊';
      '7': Result[1]:='演劇・映画';
      '8': Result[1]:='体育・スポーツ';
      '9': Result[1]:='諸芸・娯楽';
    end;

  if (Length(NDC) > 1) and (NDC[1] = '8') then
    case NDC[2] of
      '1': Result[1]:='日本語';
      '2': Result[1]:='中国語・東洋諸語';
      '3': Result[1]:='英語';
      '4': Result[1]:='ドイツ語';
      '5': Result[1]:='フランス語';
      '6': Result[1]:='スペイン語';
      '7': Result[1]:='イタリア語';
      '8': Result[1]:='ロシア語';
      '9': Result[1]:='その他諸国語';
    end;

  if (Length(NDC) > 1) and (NDC[1] = '9') then
    case NDC[2] of
      '1': Result[1]:='日本文学';
      '2': Result[1]:='中国文学・東洋文学';
      '3': Result[1]:='英米文学';
      '4': Result[1]:='ドイツ文学';
      '5': Result[1]:='フランス文学';
      '6': Result[1]:='スペイン文学';
      '7': Result[1]:='イタリア文学';
      '8': Result[1]:='ロシア文学';
      '9': Result[1]:='その他諸国文学';
    end;

end;

使用例

    St:= TStringList.Create;
    NDCToField('460', St);
    S:= St[0] + ':' + St[1];// = '自然科学:生物学・博物学'
    St.Free;

参考

日本十進分類(NDC)について

 図書を内容別に分け、一定の分類体系にしたがって分類することを図書分類
といいます。日本十進分類法(NDC)は、0〜9の大分類から十進法で順次細かい
分類に進むようになっています。

例
1次区分
  400 自然科学
2次区分
   410 数学
   420 物理学
   430 化学
   440 天文学
   450 地学
   460 生物学・博物学
   470 植物学
   480 動物学
   490 医学・薬学
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
文想工房 http://hp.vector.co.jp/authors/VA005818/
六角堂  http://www02.so-net.ne.jp/~k-sasaki/

Original document by 六角三房        氏 ID:(CXE02604)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum