こんにちは、ねこです。

自称プログラマのおばちゃんのブログです。いろいろあるよねぇ~。

意外と難しかった二次元配列の関数渡し-Javascript-(短し)

2014-01-07 12:26:43 | Designer javascript
スクリプトオブジェクト内にこれを設置

function checkCandidate(vtest){

xfa.host.messageBox(String(vtest));
var vtest = "yokudekimasita.";
return vtest;

}


配列を組み立てる場所にこれを設置

var parmCombiArray = [];
for (var i=0; i<5; i++){

parmCombiArray[i] = [];
parmCombiArray[i][0] = 'a:'+i;
parmCombiArray[i][1] = 'b:'+i;

}
var vtest = checkCandidate.checkCandidate(parmCombiArray);

xfa.host.messageBox(vtest);


うまくいけば、メッセージが二回出てきます。
一回目は飛ばされた配列の内容。二回目はファンクションによって置き換えられた内容です。

ではではぁ~。

見直してみると、なんでこんなに難しかったんやろう。結構時間がかかった。あんま、ぷろだくてぃぶやない、ぱっとさん(ねこの直の女上司)が知ったらおこるなぁ。

ねこ

Donさん

2014-01-06 12:57:03 | 言霊であれば。
まったくLivecycleに関係ないといえばないが、関係ないお話です。

ねこのチームは、上級Javaプログラマー1人、AS400RPG上級プログラマー1人、ねこの担当の『なんでもやさん』プログラマー1人、そしてデータアドミニストレーター兼チームリーダーを含む4人でなってます。

このJavaプログラマーがDONさんです。
60を超えてるかもしれないこの彼はIBMで昔働いていたつわものでしたが、わけあって今ねこの同僚をしています。
しかし、プライドが高いのでなかなか一筋縄で『YES』といいません。
まぁ、日本に限らず、ここアメリカでもコンピュータ・ギークというのはプライドが高いですなぁ。
今朝もES4のプロダクション・サーバーと個々のローカル・サーバーの同機化を話しててなかなか先へ進みません。で、切れたねこが、「とにかく、もっとはっきりとしたミラー化を徹底させるべきだから、パッチでアプリケーションをインポートしてアップグレードさせるんじゃなくって、いちいち既存のアプリケーションを削除して新しいのを置き換えるべきやっ!モジュール思想や!Livecycleは普通と違う、変や!」といったら初めて「Agree...」と悔しそうにつぶやきました。
PDFベースのシステムやらか、まぁず、ハッキングは難しい。
でも、それだけ更新等に手数や時間がかかる。新旧のファイル・マネジメントも難しい。

で、お昼にカレーライスを作って持ってきました。二ヶ月ほど前にねこは子宮摘出手術をしていて、同僚の人たちがお見舞金を送ってくれたんで、そのお礼にと思ってね。
スープカレーみたくなったんですが、結構おいしかったんです。

で、時間になったんで、休憩室へアダムと一緒にカレーを振る舞いに行きました。そこへドンさんがやってきて、少しのあいだ、うろうろとねこのカレーの周りを歩いてたんですが、他のおばちゃんやらに押されて端のほうへ行ってしまいました。
それに気づいたへこは、「Would you like to have some, Sir?(いかがですか?)」とスーパー丁寧に聞いたんですが、なんだか怒ったように、「I'm not interested...」とはねつけられちゃいました。。。ちぃーと頭に血が上ったんですが、それを抑えてははは、とその場を立ち去りました。アダムたちが「おいおい、おいしいよ~」っとあわてて言ってくれたんだけど、やっぱしドンさんは不機嫌。

少ししてからねこは思ったんだけど、
「今朝、サーバーの同機化の話で自分から折れて同意したことは、ドンさんにとってとっても勇気のいることだったのね。その譲歩に私も答えてあえて機嫌よく振舞ってあげるべきだっなぁ。」と。
人によっては、譲歩するという行為がどれほど難しくあることか。ましては、その努力に見返りを期待しないわけがない。期待すべきではないと思いつつも、内容はとにかく、自分の意思を曲げたような気になってまで、相手を思って譲歩できた自分に見返りがないわけがない。
ねこは、真っ先にドンさんにカレーを振舞うべきでした

心の『ひだ(襞)』ってなものですね。

反省。


<心のひだ >

その時どきに感じ取られる、心情・感性のニュアンス。
人と人が互いを思いやる絆などに愛や温もりを感じた際に用いる。

『はてなキーワード』さまより引用。


SQL: 同じデータをひとつのテーブルから見つけ出す方法 (長し)

2014-01-03 07:23:41 | 便利なSQL
遅かりし明けおめです。

すっかり二日も休んでました。
先週と今週の水曜日にクリスマス、正月と飛び飛び休日だったんで、なんだか働くのが馬鹿らしくなってきてます。
しかぁーし、来週からまったく通常の業務スケジュールでそこへ突入するのが怖い。。。
ふんどし締めてくぞー!

で、SQLです。
ねこはあまり得意ではありませんが、同じデータをひとつのテーブルから見つけ出す方法や、簡単にバックアップを取っちゃう方法なんかは初心者レベルではありますが、とても便利です。

1.同じデータをひとつのテーブルから見つけ出す方法

select unique_aaa, bbb, ccc
from tamatable t where exists
(select unique_aaa, bbb, ccc
from tamatable where t.unique_aaa = unique_aaa
and t.bbb = bbb and t.ccc = ccc
group by unique_aaa, bbb, ccc having count(unique_aaa) > 1)

2.二つのテーブルを比べる方法

select min(test) as test, aaa, bbb, ccc
from(
select 'tamatable' as test, t.aaa, t.bbb, t.ccc
from tamatable t
union all
select 'miketable' as test, m.aaa, m.bbb, m.ccc
from miketable m
)temp
group by aaa, bbb, ccc
having count(*) = 1

3.データごとに番号を振り当てる方法

select row_bunber() over(order by aaa) as rownumber,
aaa, bbb, ccc from tamatable order by aaa

4.長いテキスト順に表示する方法(これはテストデータを取るときによく使います。)

select aaa, length((trim(nagainamae1) ||' ' || trim(nagainamae2)) as len,
(trim(nagainamae1) ||' ' || trim(nagainamae2)
from tamatable order by len

で、とった後のデータをうまい具合に
nagainamae1 : nagainamae2
と表示し、尚且つ73以上の字数の場合に折り返すようjavascriptで制御するとこうなります。

//thisとは表示したいテキストフィールドのことです。
this.rawValue = nagainamae1.rawValue+" : "+nagainamae2.rawValue;
//ここで『:』を探させてその位置を得ます。
var vSymb = this.rawValue.indexOf(":");
//その位置までの文字、すなわちnagainamae1をvTopと定義付けます。vSecoundLineはそれ以降の終わりまでの文字となります。
var vTop = this.rawValue.substring(0,vSymb);
var vSecondLine = this.rawValue.substring(vSymb+1);

//ここでこのテキストフィールドの文字数を制限します。
if (this.rawValue.length > 73){ //全体数が73文字より大きいものを以下に適用。
vS1 = vSecondLine.substring(0,73);
var vBlank = vS1.lastIndexOf(" "); //73文字中、一番右側にある空白をvBlankとして得ます。
vThirdLine = vSecondLine.substring(vBlank+1); //vBlank以降の文字をvThirdLineに定義つけます。
vSecondLine = vSecondLine.substring(0,vBlank); //またvSecondLineの定義を空白のvBlankまでと再度定義つけます。
this.rawValue = vTop+":\n"+vSecondLine+"\n"+vThirdLine; //『+"\n"+』をつかって折り返し地点をつけます。
}

たぶんね、ちゃんとループをつかってやればもっと自由な動的な動きができるんだろうけど、今は時間の都合でこれが精一杯。すまぬ。

5.バックアップテーブルなどのテーブルのコピーをとる方法。

create table tamatable_backup as (
select * froj from tamatable)
with data

AS400 DB2ではジャーナルが取れませんのであしからず。

6.バックアップの復元方法。

まずはやっちまった方を削除して
delete from tamatable

バックアップテーブルを挿入してやる。
insert into tamatable select from tamatable_backup

7.二つのまったく違うテーブルをキーフィールドを頼りにアップデートする方法。

UPDATE CITY_TABLE
SET POPULATION = (
SELECT P2.POPULATION2010 AS NUMERIC
FROM NEW2010TABLE P2
WHERE CITY = P2.PLACE_NAME
),
USERID = 'DEQ081',
CDATE = '2011-07-05'
WHERE
EXISTS(SELECT 1 FROM NEW2010TABLE P2
WHERE CITY = P2.PLACE_NAME)

これであれば、フィールド数などがちがっててもキーさえあえばすんなりとアップデートしてくれます。

ついでをいうと、AS400のデータテーブル格納テーブルはだいたいQSYS2.SCHEMATAがライブラリーで、それとQSYS2.SYSTABLESがフィジカル・ロジカルファイル名です。

今日のメモはここまで、おしまいっ!さぁ、仕事しよ。