約 2,903,297 件
https://w.atwiki.jp/myrenshu/pages/35.html
https://w.atwiki.jp/sampleisbest/pages/349.html
開発環境 メモ帳 実行環境 Internet Explorer 11
https://w.atwiki.jp/api_programming/pages/41.html
下位ページ トリガ Content 基本文法やメソッドはjavascriptに準ずる Eclipseから編集する webアプリケーションとして CORS スクリプト中で別のスクリプトを呼びたしたいリンクさせて使えるか? メッセージボックス 外部APIを叩く 外部からAPIで操作する Google Apps Script 内に作った関数を別のPJTから使用する 基本文法やメソッドはjavascriptに準ずる Javascript Eclipseから編集する プラグインがある。機能上に制約があるので、通常はScript Editerで良さそう。たまにインデントが乱れたりするので、そのような場合はEclipseに持ち帰って、コードチェックを掛けるとか? 同じファイルを、①Script Editorで編集→②保存、③Eclipseで編集→④保存としたら、ちゃんと④で警告が出た。 ただし、 プロジェクトの新規作成は非対応(プロジェクトのインポートのみ) プロジェクト名の変更もできなさそう。 gsファイル、htmlファイルはルートフォルダに。その他のタイプのファイルや、サブフォルダのファイルはgoogleドライブではApps Scriptの一部にみなされない。 自動補完機能はライブラリに対しては提供されていない?(Autocomplete suggestions are not provided for libraries or advanced Google services.) ごくごく最近追加されたメソッドにも対応していないかも。スクリプトエディタで有効なら、ま、まだちゃんと走るけど。 Eclipse 使い方:先に作っておく? ファイル→インポート→google→GAS 新しいファイルの追加 File New File拡張子は.gsか.html 編集内容のアップロード 自動的にされている Eclipseでの保存時に、プロジェクトのファイルビューのアイコンに×マークがでる(アップロード未完)。バツが消えたらアップロード完。 webアプリケーションとして htmlファイルを設定 https //developers.google.com/apps-script/guides/html/ ようするに、getリスエストが来た時の関数 doGet内に、表示させるhtmlを指定しておけばよい。 return HtmlService.createHtmlOutputFromFile('index'); CORS https //developer.mozilla.org/ja/docs/HTTP_access_control あるドメインから取得したページ内で、別のドメインのページを呼び出せない。 imgタグ内、scriptタグ内など、例外はある(ので、CORSを知らないとなんでできないの?と思ってしまう) 実際には、上記のような例外をのぞいて、ドメインが違うサーバへのリクエスト(レスポンス)は受け付けない。 ここを読む限り、GASサーバへのXMLHttpRequestは不可。 GAS内で表示された、htmlから(クライアントから)実行するための機能はある(google.script.run)が、あんまり解決になってない。やりたいことが、よそのサーバから自分のscript(Spreadsheet)とも連携、なので。 スクリプト中で別のスクリプトを呼びたしたい まだ実施していないが、スクリプトファイルを公開状態にすれば使えるようになるみたい。 使われるスクリプトを開いて「ファイル」→「プロジェクトのプロパティ」 プロジェクトキーを控える 使うスクリプトで「リソース」→「ライブラリ」 ライブラリのキーを入力する http //itami.info/tech/14-memorandum/188-googleappsscriptincludfunctions.html Google Apps Scriptで作った関数類をライブラリ化しよう リンクさせて使えるか? 無理っぽい。HTMLならできるけど。 無理やりやるなら、こんな方法。 GASのライブラリを使って楽したい② 外部のJSライブラリを使ってみる( 3」[_] http //qiita.com/soundTricker/items/5a7e050a2a20f3e3938a メッセージボックス Browser.msgbox(str) msgBox(prompt) 外部APIを叩く Class UrlFetchApp GASで外部APIと連携 - Qiita External APIs 外部からAPIで操作する Google App Scriptではなく、Java(とかの)プログラムから操作したい とりあえずJavaでプログラムを組むか。 https //developers.google.com/api-client-library/java/ ライブラリを取得する APIの使用許可を得る(認証) http //a-auto50.blogspot.jp/2015/06/drive-rest-apijavagoogle-drive.html Google Apps Script 内に作った関数を別のPJTから使用する https //www.lisz-works.com/entry/gas-create-lib
https://w.atwiki.jp/keiplus/pages/204.html
GoogleAppScript GoogleAppsScript gas 本項は書きたての記事です。正確な情報は公式サイト、公式ドキュメント、記載の参照サイトでご確認ください。 ライブラリ、アセットの著作権は版元・開発者サイトで必ずご確認ください。 目次 + 読む GoogleAppScript目次 History GAS開発 ジェネリック・ライブラリ GoogleApp連携 History No Release 対応 1 2009年5月 2 2009年8月 JavaScript1.6ベース。1.7と1.8、ECMAScript 5APIの一部を含む。 3 2020年3月 Rhino JavaScript、V8 Rhino JavaScript ※ たぶんあるだろうがVersion/Revisionが不明なためNoとした。 GAS開発 JavaScript(ECMAScript/JS)ベース。 少し癖はあるもののJSの文法等を理解していれば楽に入って行ける。 次に、ECMAScriptであるものの開発環境をある程度統一したいという気持ちは出てくるもの。そこで 「clasp」を使ってTypeScriptで開発することができる。 webフロント/バックをnode系で開発しているなら、TypeScriptに統一できるのはメリットある。 またGit管理を行えば効率化できる。 Google TypeScript Style Guide https //google.github.io/styleguide/tsguide.html ライブラリ 自分のGAS関数をライブラリ化できる。 過去の資材をいくらコピペで良いといっても煩雑になる。そこでライブラリ化して呼び出すだけで使えるようになっておきたい。 チームや社内で共有資産として展開しておくといい。 後述でジェネリックなライブラリを紹介している。Githubなどで公開されている方もいるが、ストア化されていないのでなかなか見つけ辛いのが難点。 GASトリガー GASトリガーはAWS Lambdaのように「実行時間」「実行回数」「トリガー制限」「サービス毎の制限」がある。 業務で有償利用している場合を除いて無料枠のはずなので、GASはボタン押下で動かすようにして極力トリガーは使わないようにしたい。 どうしてもトリガーを使いたい場合はトリガーカウンターを用意して、閾値を超えた場合は発報(メールやSMS等)するようにした方が良い。 Google サービスの割り当て 現在の制限事項 | Apps Script | Google for Developers https //developers.google.com/apps-script/guides/services/quotas?hl=ja#current_limitations 最大実行時間 機能 無料アカウント Google Workspace アカウント スクリプト ランタイム 6 分 / 実行 6 分 / 実行 カスタム関数ランタイム 30 秒 / 実行 30 秒 / 実行 実行時間 機能 無料アカウント Google Workspace アカウント トリガーの合計実行時間 90 分 / 日 6 時間 / 日 実行回数制限 機能 無料アカウント Google Workspace アカウント カレンダーの予定の作成 5,000 / 日 10,000 人 / 日 連絡先の作成 1,000 人 / 日 2,000 人 / 日 グループの読み取り 2,000 人 / 日 10,000 人 / 日 JDBC 接続 10,000 人 / 日 50,000 / 日 JDBC 接続の失敗 100 人 / 日 500 / 日 プレゼンテーションの作成 250 / 日 1,500 / 日 プロパティの読み取り/書き込み 50,000 / 日 500,000 / 日 スプレッドシートの作成 250 / 日 3,200 / 日 URL 取得の呼び出し 20,000 / 日 100,000 人 / 日 トリガー制限 機能 無料アカウント Google Workspace アカウント トリガーの合計実行時間 90 分 / 日 6 時間 / 日 トリガー 1 ユーザー / スクリプトあたり 20 件 1 ユーザー / スクリプトあたり 20 件 Gmail制限 機能 無料アカウント Google Workspace アカウント 1 日あたりのメール受信者 100 / 日 1,500 / 日 ドメイン内の 1 日あたりのメール受信者 100 / 日 2,000 人 / 日 メールの読み取り/書き込み(送信を除く) 20,000 / 日 50,000 / 日 メール添付ファイル 250 個 / 通 250 個 / 通 メール本文のサイズ 200 KB / メッセージ 400 KB / メッセージ メールあたりのメール受信者数 50 / 通 50 / 通 メールの添付ファイルの総サイズ 25 MB / メッセージ 25 MB / メッセージ GoogleMap制限 機能 無料アカウント Google Workspace アカウント 静的マップのレンダリング 1,000 人 / 日 10,000 人 / 日 Google マップの方向のクエリ 1,000 人 / 日 10,000 人 / 日 Google マップのジオコードの呼び出し 1,000 人 / 日 10,000 人 / 日 Google マップの高度サンプルのクエリ 1,000 人 / 日 10,000 人 / 日 参考 GASをTypeScriptで使う方法 | yagshi's website https //www.oit.ac.jp/rd/labs/kobayashi-lab/~yagshi/articles/gasts/ GASにおける各種制限のまとめ #GoogleAppsScript - Qiita https //qiita.com/kakakaori830/items/84a7dcba2d6119ed320a ジェネリック・ライブラリ ライブラリと紐づけるIDは、スクリプトIDのほかプロジェクトキーがある。 自身のGASライブラリに登録するのはスクリプトIDのほう。 ライブラリ名 概要 スクリプトID Day.js 日時計算 1ShsRhHc8tgPy5wGOzUvgEhOedJUQD53m-gd8lG2MOgs-dXC_aCZn9lFB SSheetDB スプレッドシートをDB的に扱う 1m-mnNjwCIxUCgoZxTeHpvICFyntLCs52IjSxfHGA-6MbBiym441opQ21 Underscore.js 配列、オブジェクトの操作 1PcEHcGVC1njZd8SfXtmgQk19djwVd2GrrW1gd7U5hNk033tzi6IUvIAV BetterLog ログ出力 1DSyxam1ceq72bMHsE6aOVeOl94X78WCwiYPytKi7chlg4x5GqiNXSw0l ImgApp 画像リサイズ 1T03nYHRho6XMWYcaumClcWr6ble65mAT8OLJqRFJ5lukPVogAN2NDl-y Parser スクレイピング 1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw JsonDB jsonをDBライクに使う 1GavkBlPnlyz4uu7GjgczEhsk5SyHOcQPPNQ_67AK-to3ii8X0i0T9MX4 Cheerio スクレイピング 1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0 GoogleApp連携 Form2Spread (仮置き) Spread2Spread (仮置き) Spread2Gmail (仮置き) Spread2GoogleChat (仮置き) Spread2gChatTask (仮置き) Spread2gCalendar (仮置き)
https://w.atwiki.jp/damedev/pages/19.html
asdfghjk -- (aa1) 2008-10-25 13 05 45 asdfghjkl -- (aa1) 2008-10-25 13 05 50
https://w.atwiki.jp/sampleisbest/pages/474.html
開発環境 メモ帳 実行環境 Microsoft Edge
https://w.atwiki.jp/api_programming/pages/263.html
下位ページ Content イベントイベントの実行タイミング クリックとかのイベントを使いたい発火元 イベント イベントの実行タイミング DOMContentLoaded DOMツリーが構築されたタイミング(画像とかは読み込み完了している必要なし)document.addEventListener( DOMContentLoaded , function() { ... }); Queryのreadyも上に同じらしい window.onload 画像も含めてすべて読み込んだタイミング クリックとかのイベントを使いたい onClickとか、どの要素にも登録できる(っぽい)。 発火元 eventオブジェクトを使って、取れなくはないが、event.targetだとネストされたタグの結果を拾ってくる可能性がある。 li class="A" AAA ul li class="B" AAABBB /li li class="C" AAACCC /li /ul /li でAAABBBのli要素が帰ってきたり、ul要素が帰ってきたり。バブリング。 http //d.hatena.ne.jp/teramako/20130528/p1 event.currentTargetだと、まさにonClickとかのイベントを登録したDOM要素が返る。 Element - MDN
https://w.atwiki.jp/alotofstories/pages/33.html
Tweets by Alotofstories_
https://w.atwiki.jp/api_programming/pages/190.html
下位ページ Content 表示・非表示hide slideUp / slideDown スクロール要素の、ドキュメント上の位置を取得する スクロールできる要素の、現在のスクロール位置を取得・設定する 表示・非表示 CSSの display none にする hide hide([speed[,callback]]) / show([speed[,callback]]) / toggle([speed, [callback]]) speedはミリ秒で指定。もしくは"slow","normal","fast"。 speedも指定しないと、アニメなし。 hide - jQuery日本語リファレンス show - jQuery日本語リファレンス toggle - jQuery日本語リファレンス toggle - jQuery日本語リファレンス slideUp / slideDown 下から上に消えていく。上から下に現れる。交互に切り替える。 slideUp([speed], [callback]) slideDown([speed], [callback]) slideToggle([speed], [callback]) slideUp - jQuery日本語リファレンス slideDown - jQuery日本語リファレンス slideToggle - jQuery日本語リファレンス スクロール その要素にスクロールバーが設定されていることが前提。この前提を元に、スクロール位置を取得・設定する。 要素の、ドキュメント上の位置を取得する .offset() topとleftを取得するので、topの位置なら .offset().top として取得する http //semooh.jp/jquery/api/css/offset/_/ スクロールできる要素の、現在のスクロール位置を取得・設定する .scrollTop() .scrollTop(value) 取得できないものでは、0が返る。 http //www.jquerystudy.info/reference/css/scrollTop.html .animate() properties 型 PlainObject最終的に変化させるCSSのキーと値のマップ値を指定します。 http //js.studio-kingdom.com/jquery/effects/animate
https://w.atwiki.jp/xronia/pages/17.html
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" html lang="ja" head meta http-equiv="Content-Type" content="text/html; charset=shift_jis" title ソース解析 /title script type="text/javascript" !-- var doc = new Array(); var OpenClose = function (val) { this.openString = "("; this.closeString = ")"; this.val = val; this.matchString = ""; this.leftString = ""; this.rightString = ""; this.leftIndex = 0; this.rightIndex = 0; this.clear = function () { this.matchString = ""; this.leftString = ""; this.rightString = ""; this.leftIndex = 0; this.rightIndex = 0; } this.exec = function (val) { if(typeof(val) != "undefined") this.val = val; this.clear(); for(this.leftIndex = 0; this.leftIndex this.val.length; this.leftIndex++) { if (this.val.substr(this.leftIndex, this.openString.length)==this.openString) { this.rightIndex = this.leftIndex; var node = 1; while(node != 0) { // 括弧の終端探索 this.rightIndex++; if(this.rightIndex this.val.length) return false; if(this.val.substr(this.rightIndex, this.openString.length ) == this.openString ) node++; if(this.val.substr(this.rightIndex, this.closeString.length) == this.closeString) node--; } this.leftString = this.val.substr(0, this.leftIndex); this.matchString = this.val.substring(this.leftIndex + 1, this.rightIndex); this.rightString = this.val.substr(this.rightIndex + 1); //dbg("left " + this.leftIndex);dbg(this.leftString); //txtDebug.innerHTML += "match " + this.matchString + " p "; //txtDebug.innerHTML += "right " + this.rightIndex + " BR " + this.rightString + " p "; return true; } } } } function getText() { var l = new String(document.getElementById("txtSource").value); l = l.replace(/\/\*(.*?)\*\//g, "");// コメント l = l.replace(/(\/\/.*?)$/g, "");// コメント(C++) l = l.replace(/^[\t ]*/gm, "\r"); l = l.replace(/[\t ]*$/gm, "\r");// ブランク削除 l = l.replace(/[\t ]*\\$/gm, "\\\r");// \crの前のブランクを消す l = l.replace(/\r+/g, "\r"); l = l.replace(/\\\r/g, "");// \cr を消す // インクルードを消す l = l.replace(/^#(include|undef)[^\r]*/gm, ""); //#ifマクロの後ろに"{"をつける l = l.replace(/^(#if.*)$/gm, "\r;\r$1\r{\r"); //#endifマクロを"}"に変換 l = l.replace(/^(#endif.*$)/gm, "\r;\r}\r"); //#elseマクロの前後に{}をつける l = l.replace(/^#else/gm, "\r}\r;\r\#else\r{\r"); l = l.replace(/#define(.*)$/gm, ""); //if/while/until/switch/for特化 //l = l.replace(/\r(if|while|until|switch|for|do)\s*($openclose)\s*([^\{](? |if|while|until|switch|for|do)[^\}]*)/g, //"\r$1$2{\r$3\r}\r"); //変数宣言を消す l = l.replace(/^\w+(? \s+\w+)*(? (? \s*\*)?\s+(? \*\s*)?)+[\w\[\]]+;/gm, ""); //キャストを消す //l = l.replace(/(? \*\s*)?\([\w\s\* ]*\)\s* /g, ""); //変数宣言+初期化 l = l.replace(/^\w+\s+([\w\[\]]+\s*=\s*[\w\{\}]+\s*[\w\[\]]*\s*;)/gm, "\r$1"); l = l.replace(/(? \*\s*)?\([\w\s\* ]*\)\s*([\( a-zA-Z])/g, "$1"); l = l.replace(/^\}[\t ]*([^\r])/gm, "\r}\r$1"); l = l.replace(/[\r\n]/g, ""); // 行末文字で分割 var s = new String(); var ar = l.match(/[^\ \;\{\}]*[\ \;\{\}]/g); for(i = 0; i ar.length; i++) { var n = new String(ar[i]); n = n.replace(/^\s+/gm, ""); n = n.replace(/\s+$/gm, "");// ブランク削除 n = n.replace(/^\;$/gm, "");// 先頭;の削除 if(n.length != 0) s += n; } var r = new OpenClose(); r.openString = "{"; r.closeString = "}"; var i = 0; while(r.exec(s)){ var func = new String(r.leftString); var str = new String(r.matchString); s = new String(r.rightString); //txtDebug.innerHTML += " p func="+func+" p "; //txtDebug.innerHTML += " p str="+str+" p "; //txtDebug.innerHTML += " p s="+s+" p "; var ar = func.match(/(\w+\s*)(\(.*\))/); if(!ar) continue; doc[i] = new Object(); doc[i].symbol = ar[ar.length - 2]; doc[i].func = func; doc[i].str = str; i++; } document.getElementById("selFunction").innerText = ""; for(var i = 0; i doc.length; i++) { var e = document.createElement( option ); // value オプションにiを設定 e.setAttribute( value , i); // OPTION タグ内のテキスト設定 e.appendChild(document.createTextNode(doc[i].symbol)); // SELECT Listへ登録 document.getElementById("selFunction").appendChild(e); } //txtDebug.innerHTML += lines.join(" BR "); //alert(l); } function dbg(str) { document.getElementById("txtDebug").innerHTML += str + br ; } function getFunction() { var index = parseInt(document.getElementById("selFunction").value); if(isNaN(index)) return; var dat = nest(doc[index].str); var win = window.open( , _blank , directories=no,location=no,menubar=no,status=no,toolbar=no,scrollbars=yes ); //win.navigator.language = ja ; win.document.title = doc[index].symbol + 詳細設計書(PAD) ; var tbl = win.document.createElement("TABLE"); var tblBody = win.document.createElement("TBODY"); var row = win.document.createElement("TR"); for(var i = 0; i 100; i++) { var cell = win.document.createElement("TD"); var cellText = win.document.createTextNode(i);//"\u00a0"); cell.appendChild(cellText); cell.width = 10; cell.style.fontSize = 8pt ; row.appendChild(cell); } tblBody.appendChild(row); var row = win.document.createElement("TR"); var cell = win.document.createElement("TH"); var cellText = win.document.createTextNode(doc[index].func); cell.appendChild(cellText); cell.colSpan = 20; cell.align = left ; cell.width = 200; cell.style.borderWidth = 2px ; cell.style.borderStyle = solid ; cell.style.borderColor = black ; row.appendChild(cell); row.style.borderStyle = none tblBody.appendChild(row); viewLine(tblBody, 0); padView(dat, false, 0); viewLine(tblBody, 0); var row = win.document.createElement("TR"); var cell = win.document.createElement("TH"); var cellText = win.document.createTextNode( End of + doc[index].symbol); cell.appendChild(cellText); cell.colSpan = 20; cell.align = left ; cell.width = 200; cell.style.borderWidth = 2px ; cell.style.borderStyle = solid ; cell.style.borderColor = black ; row.appendChild(cell); row.style.borderStyle = none tblBody.appendChild(row); tbl.appendChild(tblBody); tbl.setAttribute( CELLSPACING , 0); tbl.setAttribute( CELLPADDING , 0); win.document.body.appendChild(tbl); // ネスト解析処理 function nest(str) { var datas = new Array(); while(1) { var r = new OpenClose(); r.openString = "{"; r.closeString = "}"; if(r.exec(str)) { str = new String(r.rightString); addMethod(r.leftString); var dat = datas.pop(); if(dat != null) { dat.obj = nest(r.matchString); datas.push(dat); } } else { addMethod(str); break; } } return datas; function addMethod(str) { while(1) { var r = new OpenClose(); r.openString = "("; r.closeString = ")"; if(r.exec(str)) { addNomalMethod(r.leftString); var dat = datas.pop(); if(dat != null) { dat.pram = new String(r.matchString); datas.push(dat); } str = new String(r.rightString); } else { addNomalMethod(str); return; } } function addNomalMethod(str) { var ar = str.match(/[^\ \;\{\}]*[\ \;\{\}]/g); var s = new String(RegExp.rightContext); if(ar) { for(var i = 0; i ar.length; i++) { addMain(new String(ar[i])); } addMain(s); return; } addMain(str); return; function addMain(str) { if(str.match(/^[\;\ \{\}]?$/)) return; var dat = new Object(); dat.obj = false; dat.parm = false; dat.method = str; datas.push(dat); } } } } function padView(dat, flag, cel, row) { for(var i = 0; i dat.length; i++) { dbg(dat[i].method + " " + dat[i].pram); if(i != 0) viewLine(tblBody, cel); if(!flag) row = win.document.createElement("TR"); else { if(row.rowSpan) row.rowSpan += 2; else row.rowSpan = 2; } addLeft(row, i==0 ? 0 cel, (i == 0 flag)) // 本体 var cell = win.document.createElement("TD"); var s = new String(dat[i].method); if(dat[i].pram) s += ( + dat[i].pram + ) ; var cellText = win.document.createTextNode(i+" "+s); cell.appendChild(cellText); cell.align = left ; cell.vAlign = top ; cell.width = 100; cell.colSpan = 10; cell.style.borderWidth = 1px ; cell.style.borderStyle = solid ; cell.style.borderColor = black ; cell.style.fontSize = 9pt ; row.appendChild(cell); if(dat[i].obj) padView(dat[i].obj, true, cel+1, row); //dbg("row=" + row.rowSpan + " cell="+cel); row.style.borderStyle = none tblBody.appendChild(row); flag = false; } } function viewLine(base, cel) { var row = win.document.createElement("TR"); addLeft(row, cel); var cell = win.document.createElement("td"); var cellText = win.document.createTextNode("\u00a0"); cell.appendChild(cellText); cell.style.borderLeftWidth = 1px ; cell.style.borderLeftStyle = solid ; cell.style.borderLeftColor = black ; cell.style.fontSize = 8pt ; row.appendChild(cell); row.style.borderStyle = none base.appendChild(row); } function addLeft(row, cel, flag) { var cell = win.document.createElement("TD"); var cellText = win.document.createTextNode(cel);//"\u00a0"); cell.appendChild(cellText); cell.width = cel*(100 + 10)+1; cell.colSpan = cel*(10+1)+1; cell.style.fontSize = 8pt ; if(flag) {// 上位からの線を引く cell.style.borderTopWidth = 1px ; cell.style.borderTopStyle = solid ; cell.style.borderTopColor = black ; } row.appendChild(cell); } } //-- /script /head body textarea cols=80 rows=5 id="txtSource" void luc0_blcdchg( UCHAR mod_id , /* コール元制御ID 700V10C000616*/ UCHAR fact_id /* コール元制御内ID 700V10C000616*/ ) { /* */ UCHAR shlt_flg; /* 退避情報フラグ */ USHORT lun; /* 600V00C000126 r008 */ UCHAR oth_ctl; /* 他コントローラ番号 r008 */ UCHAR trc_msg[3]; /* LU切り替えトレースメッセージ r002 */ USHORT lu_count; /* 定義LUループカウンタ r307 */ UCHAR own_inf; /* 自CTL、自コア情報フラグ */ /* DF800対応 */ #if defined (DF_HIGH) /* 800V30C007801 */ char trc_ret; /* コントローラ間通信リターン値 */ #endif /* 800V30C007801 */ /* */ LUC_LMSET; /* 切り替え情報をLMに設定 */ COM4_CP2_CL1( inmt_calc.luc_chgadr- shlt_flg, shlt_flg); /* 800V31C023504 */ /* 退避情報フラグ取得 */ #ifdef TRACEON luc0_blstrc(shlt_flg,mod_id,fact_id); /* 閉塞LU切り替え開始トレース */ /* 700V10C000616 */ #endif if(shlt_flg == C_OFF){ /* 退避情報フラグはOFF? */ COM4_CP2_LCN( luc0_luinf.lu_ctl[0], inmt_calc.luc_chgadr- lu_ctl[0], C_CONST_LU_SYSTEMMAX); /* 800V31C023504 */ /* LU担当コントローラ情報退避 */ /* r202 */ COM4_CP2_LC4( luc0_luinf.dir_ctl[0], inmt_calc.luc_chgadr- dir_ctl[0]); /* 800V31C023504 */ /* Dir担当コントローラ情報退避 */ } /* DF800対応 */ COM4_GET_DIR((inmt_ctltbl.ctlno^OTH_CTL),luc0_luinf.chg_dir); /* LU切替対象Dir設定 r008 */ if(rcfr_systbl.ludef != NO_LUN){ /* LU定義あり r008 */ if(luc0_luinf.chg_dir == C_LUC_DIR0){ /* DIR0切り替え r008 */ luc0_luinf.chg_dir = C_LUC_NODIR; /* 切替対象DIRクリア r008 */ for(lun=0,lu_count=0;lu_count rcfr_systbl.ludef;lun++){ /* LUN定義数分 r307 */ if(rcfr_lusttbl.lust[lun] != C_RCF_LU_UNDEF){ /* LU定義済み? r307 */ lu_count++; /* LU定義カウントアップ r307 */ if(luc0_luinf.lu_dir[lun] == C_LUC_DIR0){ /* LU管理Dir情報にDIR0? r008 */ luc0_luinf.chg_dir = C_LUC_DIR0; /* 切替対象DIRにDIR0 r008 */ break; /* r008 */ } /* r008 */ } /* r307 */ } /* r307 */ } /* r008 */ else if(luc0_luinf.chg_dir == C_LUC_DIR1){ /* DIR1切り替え r008 */ luc0_luinf.chg_dir = C_LUC_NODIR; /* 切替対象DIRクリア r008 */ for(lun=0,lu_count=0;lu_count rcfr_systbl.ludef;lun++){ /* LUN定義数分 r307 */ if(rcfr_lusttbl.lust[lun] != C_RCF_LU_UNDEF){ /* LU定義済み? r307 */ lu_count++; /* LU定義カウントアップ r307 */ if(luc0_luinf.lu_dir[lun] == C_LUC_DIR1){ /* LU管理Dir情報にDIR1? r008 */ luc0_luinf.chg_dir = C_LUC_DIR1; /* 切替対象DIRにDIR1 r008 */ break; /* r008 */ } /* r008 */ } /* r307 */ } /* r307 */ } /* r008 */ else if(luc0_luinf.chg_dir == C_LUC_2DIR){ /* DIR0,1切り替え r008 */ luc0_luinf.chg_dir = inmt_ctltbl.ctlno; /* 切替対象DIRに自コントローラ番号 */ /* r008 */ oth_ctl = (UCHAR)(inmt_ctltbl.ctlno^OTH_CTL); /* 他コントローラ番号 r008 */ for(lun=0,lu_count=0;lu_count rcfr_systbl.ludef;lun++){ /* LUN定義数分 r307 */ if(rcfr_lusttbl.lust[lun] != C_RCF_LU_UNDEF){ /* LU定義済み? r307 */ lu_count++; /* LU定義カウントアップ r307 */ if(luc0_luinf.lu_dir[lun] == oth_ctl){ /* LU管理Dir情報に他コントローラ? */ /* r008 */ luc0_luinf.chg_dir = C_LUC_2DIR; /* 切替対象DIRにDIR0 r008 */ break; /* r008 */ } /* r008 */ } /* r307 */ } /* r307 */ } /* r008 */ else /* 700V10C000616 QAC対策 */ { /* 上記以外の場合 */ ; /* NOP */ } /* 700V10C000616 */ if(luc0_luinf.chg_dir != C_LUC_NODIR){ /* LU切替有り? r008 */ LUC_OWN_INF(own_inf); /* 自CTL、自コア情報取得 */ /* DF800対応 */ COM4_CP2_LC1( own_inf, inmt_calc.luc_mngtbladr- exeinf); /* 800V31C023504 */ /* LU切替関数情報設定 r008 */ /* DF800対応 */ hscc_moveque_start(C_HS_CMDMV_MODE_CTL, (UCHAR)(inmt_ctltbl.ctlno^OTH_CTL), 0, 0); /* コマンド以降開始 DF800対応 */ /* 800V10C079001 */ if(luc0_luinf.chg_dir == C_LUC_2DIR){ /* r008 */ luc0_luinf.dir_ctl[0] = inmt_ctltbl.ctlno; /* Dir担当CTL情報設定(ローカル) */ /* r008 */ luc0_luinf.dir_ctl[1] = inmt_ctltbl.ctlno; /* Dir担当CTL情報設定(ローカル) */ /* r008 */ for(lun=0,lu_count=0;lu_count rcfr_systbl.ludef;lun++){ /* LUN定義数分 r307 */ if(rcfr_lusttbl.lust[lun] != C_RCF_LU_UNDEF){ /* LU定義済み? r307 */ lu_count++; /* LU定義カウントアップ r307 */ luc0_luinf.lu_ctl[lun] = inmt_ctltbl.ctlno; /* LU担当CTL情報設定(ローカル) */ } /* r307 */ } /* r307 */ } /* r008 */ else{ /* r008 */ luc0_luinf.dir_ctl[luc0_luinf.chg_dir] = inmt_ctltbl.ctlno; /* Dir担当CTL情報設定(ローカル) */ /* r008 */ for(lun=0,lu_count=0;lu_count rcfr_systbl.ludef;lun++){ /* LUN定義数分 r307 */ if(rcfr_lusttbl.lust[lun] != C_RCF_LU_UNDEF){ /* LU定義済み? r307 */ lu_count++; /* LU定義カウントアップ r307 */ if(luc0_luinf.lu_dir[lun] == luc0_luinf.chg_dir){ /* 切り替え対象のLUN? r008 */ luc0_luinf.lu_ctl[lun] = inmt_ctltbl.ctlno; /* LU担当CTL情報設定(ローカル) */ } /* r008 */ } /* r307 */ } /* r307 */ } /* r008 */ COM4_CP2_LC4( luc0_luinf.dir_ctl[0], inmt_calc.luc_mngtbladr- dir_ctl[0]); /* 800V31C023504 */ /* Dir担当CTL情報設定 r008 */ /* DF800対応 */ COM4_CP2_LCN( luc0_luinf.lu_ctl[0], inmt_calc.luc_mngtbladr- lu_ctl[0],C_CONST_LU_SYSTEMMAX); /* 800V31C023504 */ /* LU担当CTL情報設定 r008 */ /* r202 */ #if defined (DF_HIGH) /* 800V30C007801 */ LUC_CTL_TRNS(C_PRO_LUC_RMRNRQ,0,C_PRO_LUC_NOTEXE,0, C_PRO_SEND_ALL_CORE,trc_ret); /* ローカルメモリ更新要求 */ /* 800V30C007801 */ if(trc_ret != C_OK) { } /* remark対応 */ /* 800V30C007801 */ #endif /* 800V30C007801 */ luc0_luinf.cache_inf = C_ON; /* キャッシュ切り替え実行情報ON */ rchs_luchg(C_RCH_MD_LC_LUCHG); /* キャッシュ切り替え処理 */ /* 削除 r004 */ scp0_dirchg_rep(luc0_luinf.chg_dir); /* Dir切り替え終了報告 */ /* DF800対応 */ /* 800V10C039908 */ /* DF800対応 */ memset( luc0_dirctmpbmp,0,sizeof(luc0_dirctmpbmp)); /**** 700V30C037436 **************************************/ rcfa_tcabmpclr_luc(C_RCF_512DEL_DIR, C_ON, C_CONST_MP0, luc0_luinf.chg_dir, luc0_dirctmpbmp[0]); /* 構成制御TCA差分ビットマップクリア */ /* 関数コール */ /* 通信発行フラグ:ON */ /************************************** 700V30C037436 ****/ /**** 700V35C007003 **************************************/ rvmm_dirchg_init(C_RVM_LASTSBCHG_DIRCHG, luc0_dirctmpbmp[0]); /* RVR管理・関数コール */ /************************************** 700V35C007003 ****/ /* 800V10C039908 */ hscc_moveque_end(); /* コマンド移行完了 DF800対応 */ COM4_CP2_VC1(C_LUC_NOCTL, inmt_calc.luc_mngtbladr- exeinf); /* 800V31C023504 */ /* LU切り替え関数情報設定 */ luc0_luinf.cache_inf = C_OFF; /* キャッシュ切り替え実行情報OFF */ } /* r008 */ } /* r008 */ trc_msg[0] = B ; /* LU切り替えトレースメッセージ r002 */ trc_msg[1] = L ; /* LU切り替えトレースメッセージ r002 */ trc_msg[2] = C ; /* LU切り替えトレースメッセージ r002 */ luc0_dirfnc_trc(C_RCH_MD_LC_LUCHG, trc_msg, mod_id, fact_id); /* LU切替トレース 700V10C000616 */ #ifdef TRACEON luc0_bletrc(); /* 閉塞LU切り替え終了トレース */ #endif } /* */ /textarea br input type="button" name="btnSubmit" value="解析" onClick="getText();" br select id="selFunction" /select input type="button" name="btnSubmit" value="表示" onClick="getFunction();" br br div align="left" id="txtSS" /div div align="left" id="txtDebug" /div /body /html