【M言語】キャシエ・CACHE【MUMPS】
医療、金融、物流、製造でいまだに活躍! 古参も新参者も、さー語ってくらっしゃい。 データベース新たな選択肢―リレーショナルがすべてじゃない 吉田 育代 (著), 梅田 正隆 (著) 価格: ¥2,310 (税込) -------------------------------------------------------------------------------- レビュー 出版社 / 著者からの内容紹介 「速い」「軽い」「安い」 こんなデータベースがあったのか! リレーショナル・データベース全盛時代に、 新しい選択肢を提供するスマート・データベース、 『キャシエ』の真実。 柔軟なデータ構造、高度な文字列の検索性能、 OSを選ばないマルチプラットフォーム。 医療、物流、金融など、 幅広い分野で活躍し続けるデータベース『キャシエ』。 歴史に埋もれてしまった優れたテクノロジーが、 新しい時代に蘇ってきた。 システム開発の効率化を促し、 ビジネスを自然な姿でITの世界に取り組む仕組み。 キャシエのすべてを解き明かす。 MUMPSから生まれた『キャシエ』の歴史から、 さまざまな産業界での輝かしい実績、 そして、これからの活躍の機会を、実例を交えて紹介する。 この人どっかで見たような、、、 お仕事ですか? 学生が興味持つような品じゃないと思うよ 評価用キット(シングルユーザライセンス無償版って奴)持ってるんだけど、いまいち 使い方がよくわかんないのよね。何かクライアントサイドはWindowsしか考慮されて ないみたいだし。言語バインディング増やす予定があるようなことを去年のセミナーでは 言ってたけど、例のスタジオとかいう環境の外から普通に使うことってできんの? 誰も使ってないのか、使っている人は2chを見てないのか・・・興味はあるんだけどな。 インターシステムズの中の人でもいいから何か情報書いてよ。 SQLより絶対使いやすい!!MUMPS・Cacheを使用していると、 なんで、世の中ではSQLがもてはやされるのかが理解できない。 周辺機器とも接続しやすいし、DBの中で、BASIC的なコマンドが使えるのが いい。 あげるなバカ、知ってるやつはしってるんだから。。。 解説本が原本よりかなり安かったり 日経BPに広告打ったり マーケティングはかなり頑張ってると思う でも果実を取れるかどうかは。。。 cacheってデフォルトではダーティーリードなんだよな。 分離レベルを上げたときの性能はどうなの? RDBが出始めのころ、IMS使いのベテランが「RDBは理論は綺麗かもしれないけど、 肝心のパフォーマンスが駄目だから実用的じゃないよ」と嘯いていたのを思い起こさせるな。 ま、それもひとつの真実ではあるわけだけど。 オブジェクトデータベースCach´e入門 シュプリンガーフェアラーク東京; ISBN:4431710620; (2004/05) をお持ちの方にお聞きしたいですが、これは Object-Oriented Application Development Using the Cache Postrelational Database の第2版と同じ内容ですか? 初版の内容であれば洋書第2版を購入しようかと。 ご注意ってところに 「本書記載の情報は、第1刷制作時のものを掲載していますので、〜〜」 まえがきには 「この第2版は、〜〜」とある 第2版1刷ということで、いいんだよな。 >>19 サンクス。何かビミョ〜に不安の残る書き方してるんですねぇ。 調べるの面倒なんで洋書第2版を注文することにします。日本語版にしか載ってない 情報とかがあったらちと残念ですが、実は初版だったってオチが一番いやだし。 本届いた。予想していたより薄いので気楽に読めそうです。 とりあえずどんなモノをつっこめてどんなクエリを掛けられるんだ? サンプル出せやコラ。 優れてるとか何に向くかという表現ばかりで、 何の部分が優れてて何の部分が犠牲になるのか、 全く書かれて無いね。 Cacheを意識したオブジェクト設計をしないといけないなら 意味がない気がする。 ObjectScript、ちらっと眺めてみたけどこれ設計した奴変態だな。 よくもまあこんなに気持ち悪いデザインにしたものだ。これ使ってるユーザもある意味 尊敬する。 そのObjectScriptってのがSQLみたいなもんなの? 「SQLみたいなもん」が何を意図して質問されてるか誤解してなければ 「全然違うモノです」と回答しておきます。オブジェクト指向のスクリプト言語で、 そこで扱うオブジェクトが永続化できるようになっているわけです。 但しシンタックスが謎・・・設計し直す予定ないのかしら。 MUMPSをオブジェクト指向風に拡張したのがObjectScript。 設計しなおしなんていまさら。。。 >>25 何に使われているかは、大抵の場合病院関係で、少数派は運輸倉庫系かな。 うちでは、売上管理用に使用している。 特に何に使い易いかと言われると、大抵のシステムに対応できると思う。 ただ、プログラマー人口は少ない。Mumpsは、ANSI規格にも 登録されているので心配はないと思うけど。PG人口は少ない。 OLAPやチャート描画機能は標準装備? それともこういうのを別途購入する必要あるの? http://www.speedminer.com/architecture.htm キャシェー入門届いた。 とりあえずこれで全文検索OKのBBSっぽいの作ってみる。 本当にはえーのかな?はえーといいな。 ライセンス料金、聞いてからにしなよ。 webアプリの場合だと、いい値段になるから。 ライセンス料金などなど 好奇心くらいしかないので 問い合わせメールとかして後から メールだ電話だで連絡がバンバン来るようになると いやーんなので(ほんとあの会社にゃ参った参った) 知ってる人、教えてー。 趣旨に反しててごめんなさい。「園田朋子さん」もしここ読んだら連絡ください! 真剣に探してます。 漏れもライセンス料金気になるんだけど営業が後で来るのは嫌だな。 Webアプリで使いたいんだが100万円前後くらいまでで収まるなら試したい。 そうでないならオプソのDBを頑張って使うしかない。 ライセンスどれくらいか知ってる人教えてください。 うーむ。 tp://d.hatena.ne.jp/higayasuo/20050418#1113807275 >1氏 吉田 育代さんは、以前○経ソフトウェアに執筆されてました。 Cache'の入門書(緑のヤツ)は、初めての人には分かりにくい気がしますね。 >>42 そですね。何かの雑誌でもみたことあるような、、、。和服着てました。 緑本は高価で手が出ません。とりあえず、お試し版はインスコ済みなのですが、、、。 なんかイメージ的なことばかり書かれててイヤ。 なぜ高性能か、なぜ大規模に使えるのか、が書かれてないような。 インターシステムズ(だっけ?)の人に会社に来てもらって説明聞いたけど、 それなりにいい値段したよ。ユーザー数によってはオラクルよりも高かったはず。 まぁ、勉強するとは言ってたけど。 分離レベルが Read Uncommited なのは、オラクル教の俺からするとちょっとな。 > 46 大事なことは、値段に対する能力がその製品が持っているか、と いうことだと思うね。 俺も以前はOracleだったけど、Oracleを知れば知るほど、金を ドブに捨てていることがわかるね。タコな仕様の尻ふきを 設計者、管理者がやらされていることに気づく。 ユーザには「初期導入コスト」よりも管理者に支払う 「人件費」を含む運用コストの節約に視点を向けるべき。 まあ人的スキルを除いても同じコストで実現できる 能力はCache'の方が上だと思うよ。 あと、READ UNCOMMITEDは「デフォルト」なだけな。 SET TRANSACTIONすればいいだけ。 本当のオラクル教信者は、名より実を取る。 競合製品は自分で試して評価することを実践する人が 多いのだけど、はてさて。 , だったらRDBはオープンソースが良い。 MySQLやポスグレも良いかもしれないけど、 Firebirdが一番。 MUMPSって調べてみたけど、非構造化言語で サブルーチンレベルのローカル変数すらないのね… 永続化データにはスキーマもないからデータ構造も アドホックになりがちという話。 古すぎてちょっと触りたくないな。 > 48 Firebird となったとたんにBorland製品とのマッチが 悪くなったのと、これはOSSのDBのほとんどについて 言えるがスケーラビリティにおいてはまだ大規模には向かない。 そうじゃないというなら、これに対する反論は大歓迎。 たかだかWebサイトや小規模部門サーバのDBならともかく、 病院のような(ちょっとした問題でも起こしたら 「人殺し」とののしるような客があいて)ところに OSSのDBを薦められる根拠があると俺も助かるから 教えてくんない? 医療業務や原子力関連など、生命にかかわるものに 関しては、O社も使用許諾書でこっそり「無保証」を言ってるからな。 それでも大丈夫な画期的方式がOSSにあるなら、しりてーなー OSSは自己責任だから、客に任せて、、はNGね。 そんな寛大で技術的に優秀なお客さんが沢山いれば幸せだねー > 49 マニュアルも試用版も、ベンダーサイトにある資料も ほとんど見ないで憶測で書いてるよね。キミ。 確かにCacheはMUMPSの過去資産をほとんど利用できる互換性を 持っているけどね。 N88BASICとVS.NETぐらいの差があるっていったら理解できるかな? この例は互換性に乏しいけどね。 >>50 今のところCache'には興味がないんで、 MUMPSについて調べた感想を書いただけなんだが どこか間違いあった? だったら「MUMPS」は触りたくない、って書けばいいのにねぇ。 厨房? > MUMPSって調べてみたけど、(…中略…)古すぎてちょっと触りたくないな。 って書いたんだけど、何かおかしかった? >>47 あんたのお勧めはなんだ? たこな仕様ってなんだ? 古すぎるなら 古いから使わなくていいと思うものは使わなくていい 単なる食わず嫌いに過ぎない。 古いから悪いものばかりではない!! Mumpsは古いがSQLよりも速く使いやすい。 SQLは単なる巨大なエクセルシートで検索ができるだけの データベースにすぎない。 複雑なエクセルシートを検索するなら、スクリプトが複雑になる。 なので、マスターにおいておけば済むような情報でも、詳細情報に書き込み れーコードを巨大化させている。新しく好い物なんだろうか?? また、vbからSQL情報を取得するには、VBのレコード定義 スクリプト作成、スクリプトのコール、取得されたレコードの読み込み これだけの手順が最低でも必要。Cacheなら、VISM.OCXのプロパティ で十分対応できる。複雑なDB検索が必要ならMUMPSロジックを書けば対応できる。 またサブルーチンレベルでの変数と書かれているが、実際はMUMPSでは出来るが 正解。 Newコマンドと言われるコマンドがある。 正直、MUMPSを使用していて、このコマンドは使う人は使うが、 NEWコマンド嫌いな人は使わない。 MUMPSは1960年代からある言語だから、今のWindows始まってからpc始めた 人々には難しいかもしれない。 Mumpsを使いこなすと、SQLなんて使えなくなる。 Mumpsは人間の脳の記憶に近いらしいから、人類であれば使いやすいのではと思う >MUMPSは1960年代からある言語だから、今のWindows始まってからpc始めた 人々には難しいかもしれない。 そういう人にはぜひCacheObjectScriptを。 いわゆる構造化プログラミングにも対応した 拡張M言語ともいえます。 クラスメソッドならVBライクなCacheBASICもあるし。 >Mumpsを使いこなすと、SQLなんて使えなくなる。 >Mumpsは人間の脳の記憶に近いらしいから、人類であれば使いやすいのではと思う これはMUMPSの肝である「グローバル」のことを言っているのだと 推測します。 いわゆる「永続化できる連想多次元配列」こそMUMPSをここまで 生き延びさせてきた要因かもしれない。 バリバリのプログラマなんだけど、RDB/SQLの考え方やその デメリットに辟易してる人なら、直感的に気に入るはず。 そんなによいものなら、なんで日本市場ではニッチなんだろう、 という疑問がある人は、吉田さんの本を読むべし。 いまだに階層型DBをマンセーする香具師がいるとは驚きだな。 そういう議論は80年代で終わったかと思ったが。 Cacheは何故隠されていたか ■速すぎる.. HWメーカーが支持しない 例えば、RDBなら1億円のマシンが売れるが、Cacheでは1000万円のマシンしか売れない ■日本企業がすべて開発販売に失敗 1980年頃O、T、M、P、H、(N)、D MUMPSはダメだ.. ネガティブキャンペーン ■ユーザーは成功しすぎて話したがらない 競合他社ではRDBで40億のシステムを、自社では8億で開発した… > 57 よく調べもしないでRDB派のFUDのノリそのままでくるとは 驚きだな。ていうか笑えるな。 いわゆるCOBOL方面の階層化DBとデータの持ち方が ちがうからな。 自分で試してから批判したほうがいいと思うぞ。 >■速すぎる.. HWメーカーが支持しない ちょっと前だと当てはまる構図ですね。日本のソフトウェアが 欧米製に完敗し、プラットフォームビジネスに切り替え。 ハード・ソフト両方売っているSIerはシステム開発はおまけで ハードで利益を出す。 オープンソースがはやり、Linuxがのさばり、利益率が高い RISC系オープンサーバが売れなくなって、安いIA/Linuxに 路線変更。今の頼みの綱はサポートサービスによる収益。 Cache'はハードの性能をあますとこなく生かすので、 ユーザのコストメリットは高い。 >■日本企業がすべて開発販売に失敗 「F」も入れといて。でも、最近は運用実績からみなおされてきて 既存のRDBリプレースならずとも分析系などで人気がでてきている。 >■ユーザーは成功しすぎて話したがらない おれも客の巨大データつかって、SQLアクセスのみ だったけどOracleとの性能比較したらびっくりしたよ。 そのときはRDB/SQLしか知らなかったから、 MUMPSグローバルの特性をISJにレクチャーしてもらって ダイレクトアクセスに処理を書き換えたら感動物だった。 いちおうDBA15年選手でOracleMasterも持っているので Oracleのチューニングは死ぬほどしたけど、勝てなかった。 データのretrieve以外もはやいのかな? セッションいっぱいで更新したらだめだめとかない? データファイル壊れても完全リカバリとかできる? 安全装置がないから早いですってのは嫌だYo > データのretrieve以外もはやいのかな? > セッションいっぱいで更新したらだめだめとかない? セッションいっぱいといっているのは、 サーバマシンリソースの限界のことを言ってる? 何の限界をさしてる? あと、セッションいっぱいになったがために 問題になった実例ケースを想定して話しているなら、 その実例を起こした製品はなんだ? それって、DB製品自体の問題だけじゃなくて、インフラや 消費リソースの見積もりが極度に悪いとかの場合もあるからな。 あ、あと、Oracleなんかだと負荷高騰による障害パッチが サポートを[買えず|買わず]に運用している環境にあたって なく、サポート情報も知りえないから障害なのか仕様なのか すら判別できないという悲惨なケースもあったなあ。 > データファイル壊れても完全リカバリとかできる? 当然。オンラインバックアップも可能。 > 安全装置がないから早いですってのは嫌だYo ああ、InnoDBがなかったころのMySQLみたいのね。 更新ログもってなかったらそりゃ早いだろ、と。 ちゃんと更新ログもってるし、もし速さだけを追求したい (テンポラリ作業用とか)トランザクションに対して Oracle の NOLOGGING のような機能もあるよ。 更新ログ転送してOracle DataGuardのようなリモートサーバ へのDB複製(シャドウイング)もできるしね。 >>63 >>64 MUMPSはダメだ.. ネガティブキャンペーン??? SQLこそ、くそDBである。早くなくなっちまえ。 ユーザーからみれば、安くて安定したシステムを希望する。 SQLエンジニアは、プログラムがややこしいのです、 時間がかかります。なので、コストが高くなりますで、 エンジニアっぽい能書きたれるけど、実際はSQLしか しらんから他のDBに手を出すのも今更、怖いで勉強もしない。 そこがいかん!!。 なんでも、キモイの言葉で済ます低脳な発言はやめろ。 言葉知らずども!! MUMPS,CACHEを知り尽くして、反論してみろ。 MUMPSって、DECのミニコンとかで動いてたヤツ? MUMPSの多次元連想配列って、どう使うのがセオリーなの? 「M(MUMPS)メモ帳」っていうページを見つけたんだけど、 1レコードをひとつの文字列としてまとめて変数に格納する みたいなテクニックだった。 例えばこのスレの>>1 を^DATというグローバルに入れる場合は ↓のような感じ。 ^DAT("db",1108952588,1)="2005;02;21;21;11;08;医療、金融、物流、製造でいまだに活躍!\n古参も新参者も、さー語ってくらっしゃい。" 素人考えでは、 ^DAT("db","Board Name")="データベース板" ^DAT("db",1108952588,"Thread Name")="【M言語】キャシエ・CACHE【MUMPS】" ^DAT("db",1108952588,1,"Year")=2005 ^DAT("db",1108952588,1,"Month")=2 ^DAT("db",1108952588,1,"Date")=21 ^DAT("db",1108952588,1,"hour")=11 ^DAT("db",1108952588,1,"minuit")=23 ^DAT("db",1108952588,1,"second")=8 ^DAT("db",1108952588,1,"content")="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。" こんなツリーを作ってしまいそうなんだけど。 効率が悪くなるからダメ? あ、名前とメアドとのフィールドを忘れてた。 ^DAT("db",1108952588,1)="1;sage;2005;02;21;21;11;08;医療、金融、物流、製造でいまだに活躍!\n古参も新参者も、さー語ってくらっしゃい。" こうですね。 YahooBB219023164105.bbtec.net 荒らし常習犯↑↑ > 65 俺は製品の批判はするけど、RDB理論とSQL自体は批判しない。 普通のファイルアクセスだって、大量データの全なめ用途 だけなら最速の場合もある。 適用ゾーンと使い方を間違えずに、問題にフィットする データ操作を行えばいいだけ。 中傷なんぞ勝手に言わせとけ。どうせプログラムしか 組んだことなくて、要件定義から運用保守までなぞ したこともないし苦労したこともだろうから。 > 67、67 建設的な質問サンクス 上の例だと、";" を区切りにしたPIECE構造はあくまでデータで、 このデータを検索するキーとしては("db",1108952588,1) =板、スレ、投稿番号の3つでよいという構成ならOKと いうことになるね。 キミが書いた例なら、そのあとの要素が規則的に続き、本文は データとして扱うなら ^DAT("db")="データベース板" ^DAT("db",1108952588")="【M言語】キャシエ・CACHE【MUMPS】" ^DAT("db",1108952588,1,2,21,11,23,8)="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。" ^DAT("db",1108952588,2,2,21,11,24,46)="データベース新たな選択肢 〜 略 〜 " ^DAT("db",1108952588,3,2,21,11,24,46)="お仕事ですか? 〜 略 〜 " の方が効率的。 要素確保の分効率が悪くなると思いがちだけど、 同じ要素位置の値は、そのままストレージに格納されるのでは なくて、その前の同じ要素構成の部分までは同じ、という 情報だけを持つので、このパターンだと、板とスレの要素値は 省略されてストレージに格納される。 この並びによって、実際の格納サイズも削減できるし、 RDBなら検索キーのカーディナリティ(多重度)が低い 場合でも、フルスキャンする量が減るので効果大 ソートは不要、ストアした時点で自動的に要素順に格納してくれる。 削除・更新したときのストレージの断片化も心配無用。 ストレージエンジンが自動デフラグしてくれる。 デフラグ負荷も実運用上ほとんど気にならない。 あくまでここまでは標準MUMPSのグローバルアクセス。 Cache’の拡張Mはまだいろいろある。スキーマも持たせたい 場合は、クラス定義をすることになる、ストレージには最終的に クラスに対応するグローバルにストアされるが、その構成が 異なる。その辺はマニュアルを見るべし。 https://www.intersystems.co.jp/support/csp/main.html https://www.intersystems.co.jp/support/csp/ggbl/ggbl.html https://www.intersystems.co.jp/support/csp/ggbl/ggbl_sqlobj.html UNIXでshell&Emacsべったりな生活を送っていた習性からかLinux版であっても Windows機上の「スタジオ」という統合環境からのオペレーションを強要されるのが なんとかならんもんかと思うのですが、その辺古くからのユーザさんはどうしている のでしょうか? 当方OracleのクライアントはSQL*Plusが最強だと信じて疑わないコマンドライン派です。 Cache'に興味はあるんですがWindowsが(ry >>62 ありがとうございます。 レコードの要素を文字列で持とうが添字で持とうが、 データを一直線に並べて(という表現が適切か分かりませんが) 保持するのがいいんですね。 あと、検索性についても知りたいのですが、2chの例で続けますと、 更なる要件として、スレのage/sageがあります。 板を表示するときには、各スレの最終投稿日時の降順が基本ですが、 スレごとの最終投稿日時を決める際に、メール覧に"sage"という文字列が 含まれている投稿は考慮しないというルールです。 この場合、投稿データの登録時に、メール覧に"sage"が含まれない場合に スレ別最終投稿日時インデックスを更新する、という処理になると思い ますが、そのインデックスをどう表現するのがいいのでしょうか。 あるいはもしかすると、>>70 の例の場合インデックス自体いらないのでしょうか。 ご教示ください。 >>72 M言語のグローバルについて グローバルに書き込んだ時点で、ノードごとにアスキーコード順に 書き込まれるようになっています。 >>70 のグローバルを下記の順でSetコマンドを実行した場合 Set ^DAT("db",1108952588,3,2,21,11,24,46)="お仕事ですか? 〜 略 〜 " Set ^DAT("db",1108952588,2,2,21,11,24,46)="データベース新たな選択肢 〜 略 〜 " Set ^DAT("db",1108952588,1,2,21,11,23,8)="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。" Set ^DAT("db",1108952588")="【M言語】キャシエ・CACHE【MUMPS】" Set ^DAT("db")="データベース板" 逆にグローバルをセットしても グローバルを参照した場合は、下記のように表示されます。 ^DAT("db")="データベース板" ^DAT("db",1108952588")="【M言語】キャシエ・CACHE【MUMPS】" ^DAT("db",1108952588,1,2,21,11,23,8)="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。" ^DAT("db",1108952588,2,2,21,11,24,46)="データベース新たな選択肢 〜 略 〜 " ^DAT("db",1108952588,3,2,21,11,24,46)="お仕事ですか? 〜 略 〜 " ノードで参照する場合であれば、インデックスは不要です。 キー値前ゼロの有無でダブルコーテーションの要不要が変わるのはやめてくれ〜 前ゼロキー値がソート順で後ろになるのはやめてくれ〜 コメント行入れるとネストがぶっちぎられるのはやめてくれ〜 ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜 ループのブレイクがフラグ変数使わないと書けないのはやめてくれ〜 ごめん。もうひとつ追加。 >ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜 でこのときネスト外に同名変数があると、 有無を言わさず上書きになるのはやめてくれ〜 >>74 >キー値前ゼロの有無でダブルコーテーションの要不要が変わるのはやめてくれ〜 "000005" 000005 の件ですね。 これは、ごめんなさい。あなたが、コンピュータそのものを理解していないだけです。 上記の"00005"は文字列として扱う、000005は数値として扱うなんです。 仕様としては理に適っています。 >前ゼロキー値がソート順で後ろになるのはやめてくれ〜 本件も、ソート順がAsciiコードである事を理解されていないからですね。 仕様としては正しいです。 >コメント行入れるとネストがぶっちぎられるのはやめてくれ〜 何を言おうとしているのかわからん >ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜 Newコマンド使わなきゃいいんじゃないの? >ループのブレイクがフラグ変数使わないと書けないのはやめてくれ〜 どこのMumpsを使用したの? M経験者と言われても、数ヶ月でしょうか?SQL(2次元DB)経験者ではとっつきにくいかも しれませんが。仕様を理解されて使うと 本当にいいDBですよ。 >>76 あーレスどうもです。 > >キー値前ゼロの有無でダブルコーテーションの要不要が変わるのはやめてくれ〜 > これは、ごめんなさい。あなたが、コンピュータそのものを理解していないだけです。 > 上記の"00005"は文字列として扱う、000005は数値として扱うなんです。 >仕様としては理に適っています。 理に適っていません。 「000005は数値として扱う」は厳密に言うと5として数値扱いになります。 そして555555は常に数値扱いとなります。"555555"と書いてもです。 つまりこの問題の本質は、固定桁数数値をキー値として扱う場合、 先頭がゼロかそうでないかで処理を分けなければいけないということです。 ○○コードとか○○区分とか、世の中固定桁数数値で扱わなきゃ いけないものが結構あるのですが。 # って書くと「常に前ゼロなしで扱えばいいのでは」という話になるのですが、 # それはそれで表示時の前ゼロ書式化/書式化解除が手間でしょう。 >>コメント行入れるとネストがぶっちぎられるのはやめてくれ〜 >何を言おうとしているのかわからん ↓こんな感じ。 D ;ネスト開始 .S n=1 ;ネストの中。こことか .;こことかにコメントは書けるが ;ここに書くとネストも終わってしまう .S n=n+1 ;この行は実行されない いちいちコメントアウトするときも(.の有無に)気ぃ遣わなきゃならんとは…。 >>ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜 > Newコマンド使わなきゃいいんじゃないの? 言い換えると「ローカル変数は使用禁止。構造化は諦めろ」ということですか? >>ループのブレイクがフラグ変数使わないと書けないのはやめてくれ〜 >どこのMumpsを使用したの? これは失礼。説明不足でした。ループ継続条件だけではなく breakもあるwhileループを想定しています。どう書くのがスマートですかね? >M経験者と言われても、数ヶ月でしょうか?SQL(2次元DB)経験者ではとっつきにくいかも >しれませんが。仕様を理解されて使うと >本当にいいDBですよ。 Cache'4で1〜2年ほど。VT200環境で動かす業務アプリでした。 きっとそれでは経験不足なのでしょうが、その上での感想は ・確かにDB自体の処理スピードは悪くない ・しかしMの言語仕様がロートルなので、生産性はまったくよくない。 ・変数スコープが変態的なので、特にデバッグでは確実に死ねる といったところ。構造化が中途半端にしか出来ないのは困りものですね。 Newの仕様に意義を見出すかどうかで、Cache'に対する印象が 分かれるかと思います。 やめてくれ〜シリーズにもうひとつ追加。 空白文字の数が一つか二つかに、文法的意味を持たせるのはやめてくれ〜 前ゼロの件ですが、0005も5もMumpsでは5です。 Mumpsで0005として扱いたければ、$E(10000+5,2,5) と書けば0005と表示されます。 確かに世の中では、固定数値で扱う事は多々とありますね。 Mumpsでは無駄なデータ情報は持たないが原則で作成するので 他のPic x(20) とか 8桁固定とか使われるDBではそのように0詰め とかしてDB登録しなければいけないですね。 Do<スペース><スペース>の件ですね。 コマンドの仕様はご存知ですか? Mumpsの基本プログラムは昔のBasicと同様上から下の行へしか行かないGoto,Quitなど 特殊な場合を除き。 Do<スペース><スペース>は、このコマンドの次の行以降で"."で始まる行を飛び先 として扱い、"."で区切られた行がなくなればそのとび先は終了となっています。 なので、"."のない行があるからとび先は終了で正しいのです。 >>いちいちコメントアウトするときも(.の有無に)気ぃ遣わなきゃならんとは…。 それは、当然気を使わなければいけませんね。 Newコマンドの件ですが、同じ変数名を、あるサブルーチンで使用する場合 などは有効と思えますが、重要な変数名であれば、いたるところで変更される 事のないように変数を利用するのがいいと思います。 よく、構造化構造化と頻りに言葉に出されるエンジニアさんがいますが、 それが、絶対正しいのでしょうか?構造化して便利に利用できるのもいいですが それにより、プログラム変更が難しくなり、仕様変更に耐えれないプログラム になるなら、古典的なプログラムでもいいと思います。エンドユーザーから 見れば、プログラム内容ははっきりどうでもいい話なんです。それより、完璧な 仕様で動作してくれればいいのです。エンジニアが、頻りに構造化構造化と言われても 彼らの一人よがりでしかありません。 breakもあるwhileループ どんなのを想定されていますが、VBなどで書いてみてもらえれば書きますが M言語の仕様自体は確かに古いです。おっしゃる通りだと思いますが、でもそれで 十分機能は果たしています。最新の言語のようにコマンドが多い方がいいですか? その文コマンドを覚えなければいけませんよ。 Mumpsは基本的にa-z,$a-$z,Za-Zzなどアルファベットまたは$付き,Z関数で構成 されていて、コマンドは少なく仕様は世界基準も整備されている、新興言語のように バージョン違えば、コマンドも違うなんて事にはなりにくいのです。 生産性がよくない事は全くをもってありません。 コマンドを知らないプログラマが言う言い訳に過ぎません。 空白文字が1文字2文字で文法が変わると言うのは、それはそれに意味があるからです。 空白文字を1つであなたは、プログラムを書いたプログラマの意思を判断できますか? 仕様は仕様なんだから、それに対応できる理解力が必要です。なので、Mumpsに抵抗を 感じているんではないでしょうか? >>79 話のすりかえもはなはだしいな >エンドユーザーから >見れば、プログラム内容ははっきりどうでもいい話なんです。それより、完璧な >仕様で動作してくれればいいのです。エンジニアが、頻りに構造化構造化と言われても >彼らの一人よがりでしかありません。 こんなこと書いといて、あとはひたすらMumpsの擁護かよ。 遅ればせながら>>77 最後の一分の誤記を訂正致します。orz 誤: Newの仕様に意義を見出すかどうかで、Cache'に対する印象が 分かれるかと思います。 正: Newの使用に意義を見出すかどうかで、Mに対する印象が 分かれるかと思います。 >>79 さんは「意義を見出さない」方のようですね。 >確かに世の中では、固定数値で扱う事は多々とありますね。 数列をあらわす項目は文字列型、数量をあらわす項目は数値型、 というように使い分けられるのがベストですが、Mでは言語仕様上 先頭がゼロなら常に文字列型(但し先頭に"+"をつければ前ゼロを除去し 数値型にキャストしたことになる)、そうでなければ常に数値型 という扱いになってしまうようです。 結局、「固定桁数数値という要件に対する解決は、Mにはない」 という解釈でよいのですかね。どのように解決しているのか 事例を出していただけるとむしろありがたいのですが。 >>いちいちコメントアウトするときも(.の有無に)気ぃ遣わなきゃならんとは…。 >それは、当然気を使わなければいけませんね。 "."を評価する以前に、コメント行の除去が行われるよう 文法解析仕様が組まれていれば、気を遣う必要すらないのですが。 「当然」なのではなく「理不尽な仕様」と考えます。 >Newコマンドの件ですが、同じ変数名を、あるサブルーチンで使用する場合 >などは有効と思えますが、重要な変数名であれば、いたるところで変更される >事のないように変数を利用するのがいいと思います。 「重要な変数」が引き立つのは、「重要でない変数」があるからです。 この「重要でない変数」の寿命・名前の有効範囲をサブルーチン内に 閉じ込めることがNew(というよりローカル変数)の真骨頂なのです。 (MではNew宣言した変数でも同名での読み書きが下位ネストで可能なので、 他言語で言うところのローカル変数とはちょっと違う) グローバル変数の読み書きは要注意というのは確かにその通りですが、 ローカル変数にも注意を要求されるのは組む側としては負担の増加です。 >よく、構造化構造化と頻りに言葉に出されるエンジニアさんがいますが、 >それが、絶対正しいのでしょうか?構造化して便利に利用できるのもいいですが >それにより、プログラム変更が難しくなり、仕様変更に耐えれないプログラム >になるなら、古典的なプログラムでもいいと思います。エンドユーザーから これはとんだFUDですね。この文脈では 「構造化(プログラミング)するとプログラム変更が難しくなり、 仕様変更に耐えられないプログラムになる」 というように読み取れますが、その根拠は何ですか? 逆に古典的なプログラムだと、そんなことはありえないんですか? 構造化/非構造化それぞれについて、具体例を挙げていただけませんか? 私の経験では「構造化プログラミングによりプログラムの見通しはよくなり 製造時の気遣いが減る分生産性は上がる。プログラム構造にハマれば プログラム変更時に当該部分を差し替えるだけですむので、 仕様変更に耐えるチャンスは増える」なのですが。 長くなったので次へ。 >breakもあるwhileループ >どんなのを想定されていますが、VBなどで書いてみてもらえれば書きますが VBだと、Exit Do/Exit Forにあたりますね。 Do While i < 10 If i = j Then Exit Do i = i + 1 Loop # 図らずもcontinueはあるんだな…。 >M言語の仕様自体は確かに古いです。おっしゃる通りだと思いますが、でもそれで >十分機能は果たしています。最新の言語のようにコマンドが多い方がいいですか? >その文コマンドを覚えなければいけませんよ。 これまたFUDですね。CもJavaもC#も予約語の数は決して多くはないですよ。 その分ライブラリが多いのですが、それは適而リファレンスを見ればよい話です。 予約語分を網羅すれば制御構造の文法は分かるのだから、 むしろ制御構造と機能を分けた、洗練されたやり方だと思います。 逆にライブラリを含めた上でコマンドの少なさを誇られても、 それは即ち実現できる機能の貧弱さを示すだけなのですが…。 >Mumpsは基本的にa-z,$a-$z,Za-Zzなどアルファベットまたは$付き,Z関数で構成 >されていて、コマンドは少なく仕様は世界基準も整備されている、新興言語のように >バージョン違えば、コマンドも違うなんて事にはなりにくいのです。 >生産性がよくない事は全くをもってありません。 >コマンドを知らないプログラマが言う言い訳に過ぎません。 ここで言われている生産性とは、単に習得の容易さのことであり、 私が考えている生産性とは意味が違います。私が考える生産性とは 「文法は一通り習得したその上で、如何に気遣いなく製造・デバッグが出来るか」 です。前述の通り、前ゼロの有無を考慮したコーディングが必要だったり、 コメントアウトの際ネストに留意する必要があったり、 うっかりNewを付け忘れてもコンパイルエラーにならなかったり、と どうも「他言語ではしなくてもいい苦労を強いられている」 ように思えてなりません。やはり生産性はよくないと考えますね。 >空白文字が1文字2文字で文法が変わると言うのは、それはそれに意味があるからです。 >空白文字を1つであなたは、プログラムを書いたプログラマの意思を判断できますか? >仕様は仕様なんだから、それに対応できる理解力が必要です。なので、Mumpsに抵抗を >感じているんではないでしょうか? 私もいろいろな言語をやってきましたが、空白文字を区切り文字としてのみではなく その個数にまで意味を持たせる言語はMが初めてでした。 他言語では空白文字がいくつあっても同じ意味合いでしたから。 そんなMの変態的文法に抵抗を感じていることは、否定しません。 えーと…、ところでこれ(>>79 )、釣りじゃないんですよね。 >固定桁数数値という要件に対する解決は、Mにはない データの型としては、Mには文字列しかありませんので、 プログラムでどうにかするだけ。 Cacheは知らんが。 >データの型としては、Mには文字列しかありませんので、 微妙に不正確な気が。いや感覚的には分かるけど。 ・変数に型はない ・文字列扱い/数値扱いどちらで評価されるかは、格納値に依存する 厳密には↑では? >プログラムでどうにかするだけ。 ないものねだりなのは分かってますが、結局組む人が知恵使って どうにかして正しく動作するようにしないといけないのね。 固定桁数数値使用時の「定石」みたいなのは 確立されていないんでしょうか。 >・変数に型はない >・文字列扱い/数値扱いどちらで評価されるかは、格納値に依存する 同意。 でもその為にパタンマッチングが存在する。 いちいちそうしなければならないのか、という気持ちもわかるけど 言語の仕様で対応されていないならMに限らず多かれ少なかれ 他の言語でも知恵使ってプログラムで対応してるでしょ? >>85 > Mに限らず多かれ少なかれ ダウト。 多いと少ないじゃ天と地の差だろう。 DSMから始まりVMS、SP−MUMPS,U−MUMPS、キャシエと M言語を使い始めて約20年。その間、メジャーなDBとは一通り出会いまし たが。。。可変長の利便性は離れがたいものがあり、今後もM言語をメインに 使用続ける事になると思います。 キャシエも可変長データ扱うけど、 容量の大きなグローバルをキルしてもcache.datがHDD上に占める サイズはキルする前のまま…グローバルが大きくなればそれだけ cache.datも大きくなるのにグローバルをキルしても小さくならないんじゃぁ 可変長なんだか固定長なんだか…中途半端だとおもう。 >>73 スレッドフロート方式の掲示板の ・書き込みが新しい順にスレ表示 ・スレ内容は最新X件を表示 ・ただしメール欄が "sage" のものは考慮外 という表示についての indexing を質問したかったんですが… >>71 Windows機上の「スタジオ」という統合環境からのオペレーションを強要されるのが なんとかならんもんかと思うのですが、その辺古くからのユーザさんはどうしている のでしょうか? 私の隣の彼は、Cache ObjectScriptのプログラムはMIFESで書いてますね。 私もデバッグはターミナル(つまりコマンドライン)でやってます (^^ >>84 ないものねだりなのは分かってますが、結局組む人が知恵使って どうにかして正しく動作するようにしないといけないのね。 固定桁数数値使用時の「定石」みたいなのは確立されていないんでしょうか。 何しろ教科書も少ないからなあ。皆さん自分の工夫でこなしているんでしょうね。 ちなみに、Cacheなら固定桁数数値をDataTypeで定義してしまえばOKでしょう。 , -'"´  ̄`丶、_ ,.∩ `ヽ 〃∪'´ ̄`二二人\ ヽ | ツ´ ̄ ̄ ̄ ̄´ ヾ ヽ. ', |ハ ,ニ、 ,. - 、 | | | l | | ハ ィハ ,二ヽ. | | | | | 同じ板にコピペするとそのままだけど、 | | | じ' |トJ〉 /)} l | 違う板にコピペすると鬼のような怖い顔 | ハ 、'_,  ̄,, 厶イ川| に変わる摩訶不思議な佳子様コピペ。 l l /\ .. イV\川 | ,' l l ,イ `l ̄´ / /ヽl l l | l ハ `メ、 〃 ヽヽ、__ノ 「固定桁数値」という考え方は数を表示するフォーマットの問題に過ぎないので、 (想像だが)普通はMプログラマはソート等で数として扱いたい場合は 「001」と「01」と「1」が別の添え字(値)として同居したりするのを防ぐために、 先行ゼロをつけたままの形式ではグローバルにsetしないとは思う。 $tr($j(数値,桁)," ",0) で固定桁表示にできるし +固定桁数値 で元に戻るし 仮に先行ゼロをつけたままでも演算はできるし 何が不満なのか何をそんなにこだわっているのかがさっぱり見えてこない。 >>90 インターシステムズの人と話す機会があったので、Eclipseのプラグインとか 考えていないんですか? と聞いてみた。検討はしているが、計画はないとのこと。 「固定桁数値」は、ノードにセットするときはソート順を間上げて0を取るって感じでしょうか? 希に、"5"と"05"は別のデータとして管理してくれ、とかいわれて泣きを見る事がありますが。 10.50 をノードにセットすると、10.61 より後になるとか。 知り合いにCacheってどうなのって聞かれたので、 「別の言語を1本知ってるひとなら大丈夫だよ」と答えました。 1日だけ研修で習ったのですが、なかなか素直な言語だと思いました。 >>97 知っている別の言語が何かによって 印象はかなり変わってくるな。 最近知ったのですが、Cache'のライセンスの方がOracleとかよりも高いですね。 昔は安かったのかもしれませんが現在はOracleの約2倍くらいしてるみたいです。。。 >99 基本的にユーザライセンス(指名・同時)の計算を 単純にユーザ数だけで計算してるからだね。 負荷分散を考慮した複数サーバ構成でやると、 Oracleよりはるかに安くなるケースがある。 あと、言語の生産性を「昔のM言語」だけで語るのをやめてくれー。 あと、言語オタクは死んでくれー。DBMSの本質を語れないやつは ここにくるなー。お前らは一生プログラマーでいろー。 プログラミングの話題しかできないやつとは議論したくねー。 漏れはCacheに触ったことはないんだが、ちょっと教えて。 CacheはM言語でアクセスすることがやっぱり前提にあるんかな? SQLでもアクセスできるみたいだけど、それだとRDBMSとの差別化がわからん。 「表」っていう概念は人間にとってわかりやすいからね。 言語まずありき、では普及するのは厳しい気がする。 >>100 じゃあ>>89 の言ってるindexingについて議論してみろ お前スレの最初から素晴らしいですとか画期的ですとか印象しか書いてないだろ まあこれまでのやりとりを見ていて俺が思うに、多次元連想配列によるデータストアは RDBと比較して自由度が高いとか柔軟だという以前に 単にプリミティブなんだな。 だからスキーマとか索引とか、システム側が提供してくれない分、プログラマが工夫して やりくりしなきゃならない。 提供する機能が最低限だから、ディスクの使用効率も高いように見えるが ちゃんとパフォーマンスを考えて索引つけたり更新したり という処理を付加していくと、その分データ構造が冗長になって、 結局はそれほど効率は高くないんじゃないかという印象を受ける。 また提供している概念がプリミティブだから、理解するのが容易とも言われているが、 実用的なモノを作れるようになるためには、上記のような何をどのように格納すべきなのか、 というノウハウまで習得しなければならない。そしてそのノウハウは個人個人の財産でしかなく 広く共有化されるところまでいっていない。MUMPSというシステムは長い歴史を誇っているらしいが、 そういう意味では非常にもったいないというか、ユーザーグループは今まで何をしてたんだ、 と問いただすべきだろう。 あとシステムに抱き合わせで用意されている言語が前時代的だから、メタデータを基にした 定型処理のジェネレーティングみたいな手法も使えない。 例えば 「メタデータを元に構造化データをストアするルーチンを自動生成する」だとか 「データをストアすると同時に索引も更新するルーチンを自動生成する」 みたいなやつね。 DBMSの本質がどうとか言ってる人、こういう議論はどうかな。 (1) ^A(X0, X1, X2, ..., Xn) = Y と (2) ^A(X0, X1, X2, ..., Xn, Y) の違いがわかりません。 (1)は何か方向性を持つのでしょうか? >>104 は どういう場合に(1)と(2)を使い分けるのかを聞きたいのじゃないか? 昔のMUMPSで作った「.rtn」のファイルをどーやっってインポートすればいいのかわからん。 ISJの人に聞いたら教えてくれるかな? >>109 "オプション"を選んで入力形式を選べばDSM、DTM、MSMとかあるので、 適切なものを選べば大抵はそのままインポートできます。 SP-MUMPSはどれを選べばいいか知りません。 >>111 どーもありがとうございます。 SP-MUMPSなのでやはりそのままではうまくいかず、ISJのサポートに電話しました。 TEXTに書き出したものをCACHE用に手を加え、スタジオに張りつけビルドすると良いそうなので ぼちぼちやってみます。 現在のフリーダウンロード版のキャシエって Visual Studio .NET 用の C#かVB用のソースコードの吐き出しかそれに代わる機能ってありますか? Visual Studio でいろいろいじくってみたいんだけど、 ホームページみてもいまいちよくわからなかったの もしできるんなら、またユーザー登録してダウンロードしてみようかなぁっておもったんだけど しってる人おしえて 過疎ってる… 仕事でCACHEを使うことになってのですが、 なぜかMUMPSではなくSQLベースのRDB的な使い方をすることになりました。 理由はMUMPSを使える技術者が少なく、外注などを探しても なかなかみつからないからだそうです。 そうなるとCACHEを使う利点がわかりません。 偉い人たちが何を考えているのかわかりません。 MUMPSを使うというかMUMPSで作ったプロシージャを ODBCから呼び出すんだよ。 ODBCとADOはMUMPSで作ったプロシージャ を呼び出せた。 実行時引数も渡せた。 実行結果も取れるよ。 MUMPSはちょいと勉強すれば直ぐに理解できると思うんだが。 ところがどっこい、それを理解できない(したくない?)SE気取りの オサーン達がMUMPSじゃ駄目だ的なことを言うのよ。 で、シャッチョサン達はオサーン達の言い訳を 真に受けちゃったらしくてね… で、>>116 に戻ると。 つうか、CACHEでSQLって速いのか? チューニングをしていないOracleよりは速いとか。 逆に言えば、チューニングしたOracleよりは遅いということ? 2ヶ月もレスが無い かくいう私も話題は無いが いや、聞いてみたいことはあるんだが、職場で特定されそうで聞けないw 気にせずに聞いちゃえば…って、すでに半年くらい経過してるのか。 こんなスレあったんだなw とりあえず簡単に書けるとこだけ。 もう2年近くも前だが…w >>81 確かに「当然」ではないだろうけど、「理不尽な仕様」でもない。 もともとインタプリタでもあるMumpsでは、 文法上タブコードの後には命令しか書けない。 つまり、「.」も前の行のネストを継承するという命令の一種。 命令すっ飛ばしたんだから、ネストは継承されない。 それとコメントするのに気を使わなきゃならないってのも、 C言語では/* */のコメントが入れ子に出来なかったので気を使ってたが… >>101 >「表」っていう概念は人間にとってわかりやすいからね。 もちろん使用するデータの種類にもよるけど、 これはRDBが主流になり始めてから出てきた神話だったりもする。 生物の分類を考えたときに、表で考えるやつはまずいない。 大抵は樹形図になるはず。 RDB以前のデータベース設計の本なんかを読めばわかるけど、 分類データはまず樹形図になるので、 これをまず表に変換しなさい、ってな話が出てきたりもする。 Excelなんかで表を書くときでも、 同じ項目が繰り返される部分のセルを連結したりした時点で、 それはRDB的概念の表ではなくなる。 >>123 扱うデータの種類と設計によるとしか言えんわな。 Oracleのチューニングが何を指すかにもよるか。 結局トータルコストで判断するってアヤシゲな話にしかならなかったり… M言語使いは需要あります? 必ずしも日本に限らず。 c、Javaを今から始めたって、 ホントに使える人はさておき、 人数多いから、ニッチなのをと考えています。 あと、M言語開発者に聞きたいのですが、 作ったシステムのデザイン(見た目)は いくらでも見栄えよくできますでしょうか? いかにも一昔前の灰色背景の味気ない ものしかできないのでしょうか? DBスレで申し訳ありませんが、 お願いします。 >>128 M言語=Cacheスクリプトで考えちゃうけど、 CacheスクリプトはDBのスクリプトなので ストアドプロシージャみたいな感じでしか使わない。 なので、目に見える部分はVBなどで作ることになるので、 見栄えはいくらでも良くできます。 需要はわかりません・・・ >>129 ありがとうございます。 良いものが必ずしもデファクトスタンダードに ならないですからね。 cacheが良いものってわけでもないけど。 対極にあるのが圧倒的だから、どうなるのかな。 Q1.cacheに関わって何年? Q2.DBの下地(他DBでの開発、学校等でさらりと)の有無 Q3.これからも扱っていく? お答えいただければ、これ幸い。 グローバルのエキスポートをCache形式で行ってしまったデータを インポートするとDBがぶっ壊れるのは仕様? Cache Block形式なら大丈夫なんだけど。 >>132 Cache形式でエクスポートした場合は、 Cache形式でインポートすれば大丈夫だが・・・ とはいっても、いつもは^%GOGEN と ^%GIGEN でインポートエクスポートしているけど。 おぉ、レスが付いてる。 >>133 それがCache形式でインポートしてもダメなんだよね。 インデックス付きのグローバルを*Dと*Iのセットでエクスポート&インポート してるんだが、インポートした後ではユニークキー指定してあるプロパティの 値が10数個単位で重複するという状態になっちゃう。 エクスポートしたのと同じマシンでインポートしてるからエンディアンとか 文字コードとかの問題じゃないはずなのに。 >>134 そのような現象は経験したことがないな。 大抵は文字コードか、形式を間違ってインポートしたときにおかしくインポートされる。 他の原因を強いて考えるなら、データ内に変な文字コードが入っていて それが悪さしている場合だけど、現象からするとそうでもなさそう。 インターシステムズ社に問いあわせるしかないと思う。 そんなに高性能なら、なんで基幹とかで普及してないの? 実績が分かりにくい上に情報も少ないし、修得するのが実は非常に困難なのでは? いくら歯の浮いた宣伝文句見せられても、キャシェと今更心中するわけにはいかないし、日本法人信用出来ないし、多分廃れるな。 もともと医療業界で発達したDBだからじゃん? 顧客チャネルが弱い 海外だとぼちぼち金融系にも入ってってるみたいだけどね ODBが速度速くて開発がラクって事はみんなわかってる でも既存開発資産との兼ね合いとかISの事業継続性リスクとか見ると 移行コスト/リスクを正当化する稟議が降りないってことでしょ SEも枯れてるDB運用じゃない新しい技術を習得する・ させることに二の足踏むだろうし あとサポートの問題もあるんだろうな もともと、RDBはそれ以前からあった階層DBより性能は悪かったわけだが RDBは瞬く間に普及し、階層DBは廃れていった。 性能ばかりが重要なファクターじゃないってことで。 Cacheが速いのって、B+Treeでインデックス張ったキーだけじゃないの? SQLアクセスって、BtrieveにSQL被せたPervasiveSQLを思い出すんだけど。 触ってみたけど、Object Scriptわけわかんね。%Library.Dateとか日付型に現在時刻 入れようとしたんだけど、ドキュメント検索して見つかった$hってはいらねー。他に現在時刻みつかんねー。 他の言語とかDBなら分かったはずの「格納時の内部表現」って奴がCacheだと全然わからん。 日付や時刻って、どうやって格納されるの?まさか文字列で"2007/09/20"って保存?? $hそのまんま代入できるプロパティ型ってある?みつかんないんだけど。無いなら、$hって何のためにあるの?? 型同士の代入互換性が全然わかんねー!こんなの入門書の一番はじめに書いてそうなもんだけど、 見つからないのは探し方が悪いのか?MUMPSの常識は知ってて当たり前だから省略されてるのか? 教えて!エロい人!!! 多分だけど、文字列で"09/20/2007"なら入る。 現在時刻を入れたければ、$zd($h)で入れればいいかも。 >>140 どうも。 日付が保存される場合、その内部表現は何なんでしょう? 日付時刻の場合は?ミリ秒まである場合は違うんでしょうか? $hで出てくる値が内部表現そのものかな?と思っても、%Date型に$hは入らないで文字は入る。 その辺が、頭で「こうできるだろう」というイメージと違ってて気持ち悪い。 自分も勉強中ではっきりとは言えないけど、 Cache'って内部表現は、全部文字列だよ。 だからCache'(M言語上)で使用するときは、文字列として扱う。 型を意識するのってJavaとか.netから使うとき位じゃない? 調べて分かったこと。 %Date, %Timeの内部表現は$holorogと同じみたいです。ただし%Dateは$hの前半分、%Timeは$hの後ろ半分 の数字が格納されます。 管理ポータルの論理モードの値は、%Date型の場合$hの日付部分と同じ値でしたので間違いないです。 一連の勘違いの原因も判明。 ・%TimeStampの内部表現が$hと違うこと(クラスリファレンスによるとYYYY-MM-DD HH:MM:SS.nnnnnnnnnn という文字列) ・何を代入しても、%Save()しないとプロパティの検証が動かない事 が原因で、%Dateも%Timeも$hじゃない、とか26/09/2007でも2007-09-26でも何でも代入できる、とか勘違いしました。 クラスを使わないオレには何を話しているか分からんw クラスを理解出来なくても。。。と言うよりクラスを知らなくても 十分業務アプリを作成出来てしまうから覚えようとする気持ちになれないなぁ(^^; 初めてcacheをさわる人に、cacheのマニュアルは突起にくいと思います。 分かる人が見てわかるようなマニュアルでは意味が無いのでは。。。 でも、SQL使うならクラスは必要では? たしか手作業で既存のグローバル変数とSQLのフィールドをバインディングできたと思うけど、 それ使ってるの? 自動でIndex更新するのも、システム管理ポータルでテーブルチューニングできるのも、 全部クラスつかってスキーマ定義するのが前提では? 十分業務アプリを作れる、という人は、GUIに何を使って、言語バインディングとかは どうしてるの?サーバーサイドはクラスやメソッドじゃなくて全部ルーチンって事? 5.xからcacheに触れた人と、MUMPSから知ってる人ではずいぶんと前提が違う気がする。 >初めてcacheをさわる人に、cacheのマニュアルは突起にくいと思います。 激しく同意。緑本も読みづらい上に、肝心なことがどこに書いてあるのかわからない。 >>146 GUIはVB.NET、接続はActiveX。 で、ルーチン呼び出してデータを操作って感じ。 学生時代(10数年前)からMUMPSをやってたんで、 今でもこのスタイルで開発。 http://iqlveq.cn cheap mp3 downloads >>150 $Order使ってるからSQL使ってないのか。 Cache関連サイトって、SQLとかクラス使う方法載せてるところが無いよね。 MUMPS懐かしい 30年前に出会いました。 そのころは、DECのPDP11/40というマシンでプログラミングしていました。 PCはIBM5550のPC−DOSがスタンドアロンで普及しはじめた頃です。 会社にはメインフレームに接続した端末ばかりで、なかなか自由に使えなかった時代で、 コーディング用紙をキーパンチャーに渡しパンチをお願いしていました。 もちろん言語はCOBOLやFORTRAN、PL1でした。 MANPSに出会って、私は目が覚めました。 今までのプログラミングはなんだったんだろう。それぐらい感動しました。 クライアント/サーバで端末が10台くらいで、各端末はLANで接続されていました。 エディターもラインエディターでした。 MUMPSは本当に簡単で習得しやすい言語です。 勉強しながら住所録の入力・修正・削除・問い合わせの画面とプリント出力の プログラムを他の仕事もしながら1週間程度でプログラミングできました。 ファイル構造(データベース)もwindowsのツリー構造そのままですね。 レコードはフルパスのような感じですし。 MAMPSの良さはデータの形式やレコードの定義を考えずに記述できるし 後から自由にレコードの構造を変更でき、他のプログラムにもあまり影響を与えないのです。 本当に少ないステップでプログラミングできるので驚きでした。 MUMPSを調べていてここにたどり着きましたが、 CACHEとうい言語に生まれ変わっていると知り、本当に嬉しい。 私が今何ぜMUMPSに関心を持っているかと云いますと。 ライセンス料金です。 windows-OS・office・VB・2003SQLサーバ・CAL・oraclとライセンス料は非常に 頭の痛い問題です。 CACHEにするとサーバをLinuxにして端末をwindowsにしても CACHEとwindowsのライセンス料だけで済むとしたら、 安いのではないかと考えたのです。 openOfficeも在るし、kingOfficeも在るので。 それにwindowsとSQL・EXCEL・ACCESS・VBはバージョンアップの度に各端末の 環境(バージョン)が違うため不具合続出なのです。 windowsをこの際見切りを付けたいのです。 http://dokan-dev.net/about/ こいつを使ってcacheのネームスペースをWindowsのファイルシステム上にマウントできればいいんだけどなぁ。 さらにMercurialなんかを組み合わせて自動的にバージョン管理までするような仕組みもできそう。 誰か作ってみませんか(他力本願・・・) スタジオからソースを自動エクスポートして、svnで管理する方法ってない? svnってsource safeみたいなやつのことだよね? cacheにエクスポートするクラスメソッドが用意されてるから VBSとかで簡単なバッチ作ればできるんじゃね? プログラマじゃないんだが 仕事(医療保険者)で、これから導入するシステムがこれで組まれているんだそうだ 上読むと医療関係で実績があるらしいがレセプト処理なんかが得意ってことなのか 別に得意ってわけでもない。 覚えることが少ないからプログラマじゃなくても何とかなるってだけ。 将来的にカスタマイズする予定があるならMUMPSやめとけ。 技術者の確保ができないから開発会社が固定されちまう。 x86_64でGT.Mをビルドしようとしてるのだけど嵌ってます。 $ gmake -f sr_unix/comlist.mk -I./sr_unix -I./sr_linux buildtypes=dbg gtm_ver=`pwd` ~/gtm/gtmsrc_5.3.0001A ~/gtm/gtmsrc_5.3.0001A/dbg/obj ~/gtm/gtmsrc_5.3.0001A/dbg/obj gt_cc_option_I: Undefined variable. gmake: *** [xfer_build] Error 1 バイナリでインストールしたもの(32bit)を gtm_ver に指定すると gmake: *** No rule to make target `pro_all', needed by `all'. Stop. となります。 centos5.2 x86_64, gmake 3.81, tcsh, icu3.6 なので環境的には問題なさそうなのですが。。。 .tcshrcには32bitバイナリ配布物の gtmcshrc 等をコピペです。 setenv gtm_curpro /usr/local/gtm setenv OBJECT_MODE 64 set path = (/usr/local/bin $path) set path = ($path . ~/bin) setenv gtm_dist '/usr/local/gtm' setenv gtmgbldir 'mumps.gld' if ($?gtm_chset) then if (($gtm_chset == "UTF-8") && (-e $gtm_dist/utf8)) then setenv gtm_dist $gtm_dist/utf8 endif endif setenv gtmroutines ". $gtm_dist" alias gtm '$gtm_dist/mumps -direct' alias mupip '$gtm_dist/mupip' alias lke '$gtm_dist/lke' alias gde '$gtm_dist/mumps -r ^GDE' alias dse '$gtm_dist/dse' set path = ($path $gtm_dist) なにか解決の糸口が分かる方、アドバイスを。。。 >>162 レスありがとう ただ既に成果物は納入されているので 後は導入支援を得て導入という段階になってる 開発はデ○タ…何か身元が割れそうだw SQL環境下で動作テストをしていたものをcashe環境下で動作テストを行うのですが SQL文のズレが分かりません。 SQLのJOIN関数は使わなくてもいいっぽいらしいのですが、どう作れば良いんですかね。 casheの概念や資料なんぞ貰わえず、とり合えず修正してくれと渡されたのですが。 casheについて講習してるような所があればお教えして頂けると幸いです。 cache講習はInterSystemsがやってる。一日2万円。講習によって日数が変わる。 SQLはSQL-92の殆どが通じる。 Joinを使わなくて良いパターンは、Propertyが他クラスの場合、->構文で参照できる。 別にJoinを使っても結果は同じだから、だまって知ってるSQLを書けばいいよ。 まずは、システム管理ポータルからSQLを打ち込んでみたら? あと、ドキュメントをみれば一応SQL関連は難しくない。MUMPS初めての人間がcacheを理解するのに あのドキュメントは辛すぎるけど。 まず、Cache SQL入門のあたりを読んでみたらいい。 これが最初に勉強中のプログラム言語だけどInValidDT()の使い方わかんねえ てかいちいち従属で変数書いて検証しないとクラス定義に合致してるかわからないって面倒すぎないか これだと普通にスプリクトに処理投げてるのと変わらない気がする そのプロパティ設定したクラスでメソッド書いたら自動で適用されるものと思ってたのにプログラムってこんなものなのか InValidDTってなんだっけ?ドキュメントに引っかからないんだけど。 ちょっとした用途だとMySQLとかで十分だしな。でも大規模になるとEliteになって簡単に億超える罠。 みんなどれくらいの規模に使ってる?参考に教えて欲しい。 あんまり具体的だとInterSystemsにばれるかもしれないけど。 ごめんInじゃなくてIsだった IsValidDT 自分は1000人分弱、予想数百MB程度のデータを扱うつもり このソフトには役不足だろうけど階層型で完成度高くてフリーで手に入るのといったらこれが一番だし でも本にしてもネットにしても情報が少なくてほんと困る 暗中模索きつすぎ >>172 進捗はさすがに公開されてないんじゃ・・・ 目次見た。 サーバーサイドプログラミング講習+ZEN講習くらいの内容か cacheで作った物って他に転用効かないから、正直あまり使いたくないな 統合環境も使いにくいし古臭い オープン・ソース M(Mumps) GT.M ttp://www.fidelityinfoservices.com/FNFIS/Markets/NonfinancialIndustries/Healthcare/gtm/ ttp://sourceforge.net/projects/fis-gtm/ Mumps II ttp://www.cs.uni.edu/~okane/mumps.html その他 ttp://mumps.sourceforge.net/ >>180 ISJのページ見てもどんな製品だかよくわからん。 ensembleはほら、BizTalkとかWebSphere MQとかと一緒でEAIの一種じゃん。 BPELのサブセットもあるし。 アンサンブルやディープシーのグラフ(SVG)で日本語出せないのはなんとかならんのか。 Flashにすればいいのに。 なんともならんよ。 大体アドビがすでにIEのSVGプラグイン放棄してるから今後もう使える望みはない。 ISもいつまでマイクロソフトのせいにして逃げるつもりかね。 しまいにゃ基幹で狐使えとか言うし狂ってるとしか思えない。 大体アンサンブルだってマトモに使えるアダプタがODBCのみとはどういう事? 使えない機能満載にもかかわらずあのトンデモ価格での提供は、本気で日本で商売する気あるとはとても思えない。 狐って火狐?IEでしか動きませんって聞いた気が。別の狐の話かな。 1億するWebMethodsよりは安いけど、大して安くはないね>Ens ところでさ、>>174 の本にCacheSQLも載ってるんだけど、DDLについて一カ所だけ触れて「後で説明」って 書いてあるんだけど、説明が見つからないんだよね。 俺の見落としかな? cacheでDDL書く奴もあまりいないんだろうけど。 狐はやサファリなんかは標準でSVG対応してるからなあ。 しかし、ディープシーのインターフェースがIEしか対応していないのも事実。実際狐だとログインが出来ない。しかしグラフは日本語表示ができない。JIS2004フォント入れてなくてもダメ。 アンサンブルは狐だとプロダクション管理画面はまあまあ使えるが、そもそも管理ポータルの動きがかなり怪しい。 早い話が全ての機能がマトモに動く環境がほとんどないという素晴らしい製品という事。 SVG はさ、SVG で保存して、アドビのソフトでSVGで開いても、ちゃんと表示されない。 IEのSVGプラグインで表示どころか、イラレでSVG の画像部品作る事ができない。 SVG の部品作成ソフトが欲しいところ orz 死んだ規格にこだわっても何も良いことないのにねぇ。 そんなことよりキャシェの基本機能や性能をさらに上げた方がもっと効果的に他のDBより差別化できるのにね。 今のISの戦略は我々がキャシェに求めているものとはかなりかけはなれたモノだよ。 死んだ規格といっても、M言語を捨てたらそもそも存在価値がなくなるんじゃ? SVGの事じゃね<死んだ規格 CSPとかZENは見直して欲しいかなぁ。セッション維持し続けてライセンス食いつぶすし、Webライセンス高いし。 おまけにC/S間独自っぽくてjQueryとか他所のライブラリを食い込ませる余地がないし。 ASP.NETですらjQueryサポートしてるのに。 WebServiceは割と楽だけど、投げたオブジェクトがCacheインスタンスになった後、更新に使えないのが不満。 新規インスタンスにしかならないから、OpenIdでロードしてプロパティ代入して、とかやらんとならん。 結局、cacheになって追加された機能って中途半端なものばっかり。 せめてSQLエクスプローラだけでも復活してくれ。 あの糞ポータルは生産性悪すぎ。 >>191 どうみてもSVGよりMの方が死んでますがなw >>193 よせよ、これからも暫くつきあうんだから。 とりあえず、newを排除できたんだからCOSは評価してもいいと思うんだ。 エラーメッセージは何とかならないのかな。 mac形式やcls形式で作ってるのに、エラー行はint形式での位置を通知されてもねぇ。 undefの変数が分かるようになりました、って今まで分からなかったのか。 これrow_number使えんのか。 21件目から30件目、とか取得したい場合どうするの? select top 30 .... where not exists ( select top 20 ... みたいにするの? それとも何か専用の書き方がある? 無い。TOPはあるけどOFFSETが無いから無意味。not existsでできた? やるならQueryの中で一部を切り出すしかない気がするんだけど、SELECT句のカラムを適切に 設定した%SQLQueryを生成する方法がリファレンス等を読んでもよくわからない。 一旦全結果セットとってから、抽出。 あまりにも膨大な結果セットになる場合は、取得範囲以外を切り捨てちゃう方法があったはず。 (多分 row num より効率が良いかも) row num が使えるDBも内部では同じ事しているから、row num が使えるだけ。 まー、row num が使えると便利だけど。 スタジオでINTルーチンをデバッグしようとすると 「エラー#6704:ターゲットがデバッガから終了しました」 ってなる。 もう一回続けてデバッグをしようとすると 「6707」って出るんだよな.. CACHE2008でファイアウォールもOFFなんだが、 何か設定がたりないのか... 誰か教えて〜 すみません。 質問ですが、ObjectScriptは、M Scriptの発展型なのでしょうか? ObjectScriptとM Scriptはどのような違いがありますか? PUBLIC宣言した変数以外ローカル扱いするプロシージャがある。実質New不要。 クラス定義ができてそれを扱える。クラス定義は内部でCOSに変換される。同じようにSQLも変換される。 ブロック構文が使える。if {} elseif {} else {} とか while {} とか。ブロック構文は$Testを無視する。 このへんかな、大きな違いは。 >>202 逆に私はCOS以降から入った人なので、知識としてif<sp><sp>else<sp><sp>とかがあるとは知っているけど、使いこなせない。 素のMのソースはマジ読めない。Mべったりの人は他にいると思うので、まだ大きな違いがあるなら、そちらの人が指摘してほしい。 個人的には、ブロックの導入が最大の違いだと思う。プロシージャも新ifも、ブロック構文が前提だから。 ああ、1日目は最初10分おきでやってたし 2日目は21:30スタートだったけど 今日は9:00スタートで2回戦は23:00のままだから結構開くんだ。 明日からは新馬戦は21:30にしよう。 ぜんぜん進んでないww 誰もいないのかな?? cache'2008も出たことだし、今後のことをきいてみたかったのに・・・ ど素人なんでROMってる 自分で組む参考にしようと常駐してるけど本当に進まないな 階層型DB選ぶなら大体これだろうと思うんだけどみんなリレーショナルなのか 俺もどしろーとww でも、、、個人レベルならcacheはあんまりメリットのでは?? 転職してこれ使うことになった 自分の発想にすごい合ってるかも だがマイナーなんだなぁ…… 何かだんだん慣れてくると癖になるな…… 恐ろしいほど早いし。 ただIsolation Levelが気になる……SQL Serverで言うREAD COMMITTEDなんだな…… 気にはなってるんだよねぇ。これ。 でも情報が少なすぎて。 クラスからルーチン(.int)を呼んで、引数渡して、戻り値受け取りたいんだけど可能? キャッシェ・・良い商品だけど価格をそろそろ見直さないと使えないです。 高すぎる。 M言語のすばらしさは、それを使った人にしか理解できないと思います。 EXCELやAccessの手軽さで、ど素人でも簡単な講習でプログラムを 組むことができるのです。 しかもそのDB構造は堅牢で理解しやすいツリー構造で容量を消費せず、しかも アクセススピードか速い。またデータの型を気にする必要も無い。 こんなプログラミング言語がCOBOLやFORTLANの時代に在ったなんて 信じられない。 誰か、UBUNTU上で日本語でフリーで使えるM言語を開発して欲しい。 Mは嫌だな。 使うならCache Object Scriptがいい。 ブロック構文も使えない言語なんて…… >>223 フリーマンプスというイスラエル産のオープンソースがあってな だれか商用でもオープン系でもいいから、ガチでSQL性能比較した人いない? それともみんなSQLは捨ててMUMPSとして使ってるの? >>232 人居ないと思ってた・・・ ありがとう 誰か分かる人いるならCache'でM言語のご教授してくだされ もう一人いるぞ Mって事は昔のソースか?Mシステムのメモ帳でggr >>234 昔のが分からないけれども、Cache ObjectScriptです 入門とメモ帳はよく読んでますが、理解が悪いです・・・ >>235 >>200-203 辺りの違いは分かってる? 講習を受けるだけでかなり理解が進むんだけどな 俺らIT関係の単価考えたら二万は安いだろ ただ、まともに理解するには管理コースとかサーバーサイドプログラミングも必修 >>236 ある事情によりMをいきなりやっている状態なもので分かっていませんでした。 講習を検索してみても現在予定 最近の見当たらなかったです。見落としていたらすみません。 それと講習がやってても時間があるかどうか・・・ test(){ } とかで、test(a)やtest(a,b,c) みたいに引数の数が分からない場合、どのように取得すればよいのでしょうか? javascriptの arguments や perl の @_ みたいなものが無いかな・・というイメージなんですが。 変数名に、val_ref みたいにするとエラーになるんですが、変数名に _ は×なんでしょうか? 実際にやってみてダメなので、ダメなんだろーなーとは思うんですが・・ 変数定義を必須にするようなオプションはないでしょうか? スペルミスとかで変数名間違ってもそのまま通ってしまうのでちょっと不安で。 もしくは局所化でもいいんですが。 javascriptでの以下みたいな (function(){ var test = ''; ・・・ })(); せめて、コンパイル時に warning ででも教えてくれるような機能があれば。 Cach? のスタジオで ctrl+z で変更を戻すときに量が多少多いと微妙に間違って戻ってしまうのでちょっと困っているのですがなんとかならないでしょうか? 今のところ解決方法が分からないので別のエディターを使ってコピペしてるんですが、面倒くさくて。 キャシエの噂を聞きつけてWin評価版入れてみ た。 裏でApache動いてるみたいだけど、評価版でも リモートからWebアプリにアクセスできるのかな? メンテを依頼された客先のシステムは C30WとかいうVT100のエミュレータでアクセスしてる。 この制御コード変換?に%NDS.obj NSYS.obj というのを 使っているんだけど全く資料がなくて作成元も不明 どこかに落ちてないですかねえ >>238 javascriptやargumentsに詳しいわけでもないし、 あまり詳しいわけじゃないから間違ってるかもしれませんが、、 関数を作りたいのでしょうか? それでしたら、関数の引数をあらかじめ、渡される予定の最大数の引数で作ってしまえばいいかと思います。 で、呼び出し元で想定している、最大の引数の数を超えない引数を超えない範囲で 関数呼び出ししてあげればいいのではないでしょうか? つまり、関数を以下のような形でつくって、、、 TEST(a1,a2,a3) S a1=・・・ 以下で呼び出す。 S X=$$TEST(X,Y) この場合、a3が定義されませんが、オプショナルということで $G()を使用しておけばいいかと思います。 >>239 連投スマヌ。。。 "_"(アンダーバー)はダメだと思います。 というのも、"_"はCacheで接続子としての役割があるから。 たとえば、A="ABC",B="DEF"のとき、A_Bは変数としては扱わず、 "ABCDEF"として解釈するってこと。 >>240 そんな機能あったら便利だねー あったら、教えてちょ。 InterSystemsのDocBookに「ページに書式が含まれている場合・・」のように書いてあって、 "書式"ってなんだろうと思ってたら、 どうやら、formタグ(<form>) のことっぽい。 デアゴスティーニから送り出された新たな週刊ロボット。 70巻を予定。今回もサーボは焦げるのか・・・ ロボ初心者も多く参入するであろうこのシリーズ、初心者は謙虚に、 玄人は寛容にお願いいたします。 デアゴスティーニ http://deagostini.jp/rbx/ ObjectScriptで文字列の抜き出し(VBでいうRight関数やMid関数)を行う関数ってないのでしょうか? $EXTRACTTや$LENGTH組み合わせて自前で作るしかありませんか? >>248 $Eでできるのではないでしょうか。 第3引数を渡せば、Mid関数と同等の処理を行うことができます。 s TEST="1234567890" w $e(TEST,5,7) と実行すると"567"が取得できます >>249 亀ですがありがとうございます。 何がしたかったかというと、桁数決めて0埋めをしたかったのです(123456 ー> 0000123456みたいに)。 >>251 まさにこれです!シンプルでいいですね。 ありがとうございました! オラクルにsqlゲートウェイで接続する場合、異常におそくないですか? ZEN+Object Scriptでファイルのアップローダー的なプログラムを作成したいのですが(ローカルファイルをサーバ内の任意フォルダにコピー)サンプルプログラムなどでこういったコードが使われているものってありますか? 補足ですが、ファイルを%FileBinaryStreamとしてDBに格納するよりも、ファイルのパスのみDBで保持する方法のほうが望ましいです。 どうかよろしくお願いします。 >>253 マスターの連動とかやってるけど遅くないよ そもそもあれってODBCでしょ? 手動で遅くないか試したら? あとはサポートに聞けばいい >>254-255 DBに保存するのは%GlobalBinaryStreamでしょ %FileBinaryStreamなら保存先はファイルパスをしていするはず ZENは知らないや >>256 てっきり%FileBinaryStreamがファイルそのものの保存と思ってました。よく見たらドキュメントのストリームの解説に 書いてありましたね。不勉強でした。 あとCSPのサンプルの中にuploadのテストページがあったのでソースを弄ってみることにします。 有難うございました。 ZENでフォームからのPOSTを受診しようとしましたが、以下の方法ではどうもうまくいきません。どなたか受け取る方法を教えていただけないでしょうか? 送信側(フォーム部分のみ抜粋): <form id="frm" name="frm" method="post" action="test03.test.cls"> <text id="hoge" name="hoge" size="20" /> <button id="bt" name="bt" caption="送信" /> </form> 受信側(メソッドのみ抜粋): Method frmrecieve() As %String [ ZenMethod ] { Set hogehoge= $GET(%request.Data("hoge",1)) quit hogehoge } <button id="bt" name="bt" caption="送信" />は <submit id="bt" name="bt" caption="送信" /> のコピペミスでした。失礼しました。 よろしくお願いします。 速い速いっていうけど、ドキュメントのページかなり遅いんだよね。 Symposia行った? DeepSee同梱って、あれライセンス料取らないの?以前は確かキャシェに含まれるけどライセンス料別って言ってた気がするんだけど。 切り上げとか四捨五入とかどうやればいいんでしょう? 切り上げが無いみたいなんですけど・・ 四捨五入は助かりました! 1で割って余りがあれば、+1すればいいんかな? #で余り、\で商なので if x#1>0 { S x=x\1+1 } マイナスの場合は最古の+1を-1にすればよいかと どうもです。 素晴らしい。ありがとうございます。ceil や round ぐらい言語にあって欲しいですけどね・・ ん・・。やっぱり全く良さが分からないんですけど、 Cache'にするメリットって誰か教えて下さい。 Mで書かれてる古いシステムを動かせる、くらいかな。 上司から今度使うから勉強しろと言われた… 超初心者なのに… 誰でも簡単にパソコン1台で稼げる方法など 参考までに、 ⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。 グーグル検索⇒『宮本のゴウリエセレレ』 96MZ6RMWAH ☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、 改憲議員が3分の2を超えております。『憲法改正国民投票法』、 でググってみてください。国会の発議はすでに可能です。 平和は勝ち取るものです。お願い致します。☆☆ read.cgi ver 07.4.7 2024/03/31 Walang Kapalit ★ | Donguri System Team 5ちゃんねる