updated on 2004.06.24 |
今度は、パターン3の説明です。ポイントは、サブファイルにレコードを書き出す部分です。DDSではSFLSIZ=SFLPAGつまり、サブファイルは1ページのみです。それから、ロールアップ(次ページ)とロールダウン(前ページ)の両方のキーワードを定義します。この一ページに、ファイルからのデータを行数分取り出して、セットして、表示して、ロールアップダウンで、サブファイル消去して、ファイルからデータを行数分取り出して...の繰り返し。パターン2はロールダウン制御をOSに任せますが、このパターン3では、プログラマーが、サブファイルをすべて制御しています。既にパターン1で説明した基本的部分の解説は、省略します。
プレーンテキストソース:zzi030.txt
H 1 Y/ 1 F****************************************************** F* D E F I N E F I L E S * F****************************************************** FZZJOBML1IF E K DISK FZZI030D CF E WORKSTN F RRN01 KSFILE SFL01 F KINFDS INFDSP E**************************************************** E* A R R A Y T A B L E * E**************************************************** E GDE 1 1 78 :CMD GIDE E OPN 1 6 78 :OPTION I****************************************************** I* D E F I N E C O N S T A N T * I****************************************************** I 10 C #PAGSZ I X'33' C F3 I X'35' C F5 I X'3C' C F12 I X'BB' C F23 I X'F5' C ROLUP I X'F4' C ROLDWN I****************************************************** I* D E F I N E D A T A - S T R U C T U R E * I****************************************************** I* INFORMATION DS (DSPF) IINFDSP DS I 369 369 PUSHED I B 378 3790DSRRN I* FOR SYSTEM DATE AND TIME I DS I 1 120DSDTTM I 1 60DSQTIM I 7 120DSQDAT I* PROGRAM STATUS I SDS I *PROGRAM V1PGM I 244 253 V1JOB I 254 263 V1USR C****************************************************** C* DEFINITION MODULE ( PLIST FIELD KLIST ) * C****************************************************** C* : C* FOR DUPLICATE : C* : C *LIKE DEFN V1JOBC W1JOBC : C *LIKE DEFN S1OPT W1OPT : C****************************************************** C* M A I N - R O U T I N E C****************************************************** C* SFL消去 : C \INZ TAG : C* : C EXSR @SETLL : C* SFL消去 : C \BDSFL TAG : C* : [解説10] C EXSR @CLCTL : C* SFL作成 : C EXSR @BDSFL : C* SFL表示 : C \EXSFL TAG : C* : C EXSR @EXSFL : C* : C F3 CABEQPUSHED \END :終了 C F12 CABEQPUSHED \END :終了 C* : C V1JOBC CABNEW1JOBC \INZ : C* : B001 C F5 IFEQ PUSHED :再表示 [解説15] 001 C Z-ADDW1CNT W1BCNT : 001 C EXSR @BWD : 001 C GOTO \BDSFL : E001 C END : C* : B001 C F23 IFEQ PUSHED : 001 C ADD 1 W1OPTN : B002 C W1OPTN IFGT 3 : 002 C Z-ADD1 W1OPTN : E002 C END : 001 C GOTO \EXSFL : E001 C END : C*入力オプション : [解説20] B001 C RRN01 IFNE 0 : 001 C EXSR @READC : E001 C END : C* : C* ROLL UP/DOWN : C* : [解説30] B001 C W1EOF IFEQ *OFF : *001 C ROLUP ANDEQPUSHED : 001 C GOTO \BDSFL : E001 C END : C* : [解説40] B001 C ROLDWN IFEQ PUSHED [解説45] 001 C W1CNT ADD #PAGSZ W1BCNT 30 : 001 C EXSR @BWD : 001 C GOTO \BDSFL : E001 C END : C* : C GOTO \EXSFL : C*終了 : C \END TAG : C* : C MOVE *ON *INLR : C RETRN : C****************************************************** C* S U B - R O U T I N E C****************************************************** C*----------------------------------------------------* C *INZSR BEGSR : C*----------------------------------------------------* C Z-ADD0 W1CNT 40 : C Z-ADD0 RRN01 40 : C Z-ADD1 H1SRCD : C* : C MOVE *OFF PICNL 1 : C MOVE *OFF W1EOF 1 : C Z-ADD1 W1OPTN 10 : C* : C ENDSR : C*----------------------------------------------------* C @SETLL BEGSR :ファイル位置 C*----------------------------------------------------* C V1JOBC SETLLZZJOBML1 : C* : C*位置指定変更検査用待避 : C* : C MOVE V1JOBC W1JOBC : C* : C ENDSR : C*----------------------------------------------------* C @CLCTL BEGSR :CLEAR SFL01 C*----------------------------------------------------* C MOVE *OFF *IN63 :SFLEND OFF C* : C Z-ADD0 RRN01 : C Z-ADD1 H1SRCD : C CLEARSFL01 : C* : C MOVE *ON *IN62 : C WRITECTL01 :SFLCLR C MOVE *OFF *IN62 : C* : C ENDSR : C*----------------------------------------------------* C @BDSFL BEGSR :SFL01作成 C*----------------------------------------------------* C Z-ADD0 W1CNT : C* : [解説50] B001 C W1CNT DOUEQ#PAGSZ : 001 C READ ZZJOBML1 90: B002 C *IN90 IFEQ *ON : [解説60] 002 C *HIVAL SETGTZZJOBML1 : 002 C MOVE *ON *IN63 : 002 C MOVE *ON W1EOF : 002 C LEAVE : +002 C ELSE : 002 C EXSR @TOSFL : E002 C END : E001 C END : C* SFLEND検査 : B001 C *IN63 IFEQ *OFF : 001 C READ ZZJOBML1 90: B002 C *IN90 IFEQ *ON : [解説70] 002 C *HIVAL SETGTZZJOBML1 : 002 C MOVE *ON *IN63 : 002 C MOVE *ON W1EOF : +002 C ELSE : 002 C READPZZJOBML1 90: E002 C END : E001 C END : C* : C ENDSR : C*----------------------------------------------------* C @TOSFL BEGSR : C*----------------------------------------------------* C MOVE *OFF W1EOF : C MOVE *OFF *IN64 :SFLNXTCHGOFF C MOVE *BLANK S1OPT : C MOVELYYJNO H1JNO : C* : [解説80] C ADD 1 RRN01 : C ADD 1 W1CNT : C* : C WRITESFL01 : C* : B001 C W1CNT IFEQ 1 : 001 C Z-ADDRRN01 H1SRCD : E001 C END : C* : C ENDSR : C*----------------------------------------------------* C @BWD BEGSR :BACKWARD C*----------------------------------------------------* C* SETGT後 : [解説100] B001 C W1EOF IFEQ *ON : 001 C ADD 1 W1BCNT : E001 C END : C* : [解説110] B001 C 1 DO W1BCNT : 001 C READPZZJOBML1 95: B002 C *IN95 IFEQ *ON : [解説120] 002 C *LOVAL SETLLZZJOBML1 : 002 C LEAVE : E002 C END : E001 C END : C* : C ENDSR : C*----------------------------------------------------* C @EXSFL BEGSR :EXFMT SUBFILE C*----------------------------------------------------* B001 C RRN01 IFNE 0 : 001 C MOVE *ON *IN60 :SFLDSP ON +001 C ELSE : 001 C MOVE *OFF *IN60 :SFLDSP OFF E001 C END : C* : B001 C V1MSG# IFNE *BLANK : 001 C EXSR @MSG : E001 C END : C* : C MOVE *ON *IN61 :SFLDSPCTL ON C* : B001 C SELEC : 001 C W1OPTN WHEQ 1 : 001 C MOVELOPN,1 V1OPN1 : 001 C MOVELOPN,2 V1OPN2 : 001 C W1OPTN WHEQ 2 : 001 C MOVELOPN,3 V1OPN1 : 001 C MOVELOPN,4 V1OPN2 : 001 C W1OPTN WHEQ 3 : 001 C MOVELOPN,5 V1OPN1 : 001 C MOVELOPN,6 V1OPN2 : E001 C END : C* : C MOVELGDE,1 V1GDE : C WRITEFTR01 : C EXFMTCTL01 : C* : C EXSR @EROFF : C* : C MOVEA'00' *IN,60 : C* : B001 C H1SRRN IFNE 0 : 001 C Z-ADDH1SRRN H1SRCD : +001 C ELSE : B002 C DSRRN IFNE 0 : 002 C Z-ADDDSRRN H1SRCD : E002 C END : E001 C END : C* : C ENDSR : C*----------------------------------------------------* C @READC BEGSR : C*----------------------------------------------------* B001 C *IN95 DOUEQ*ON : 001 C READCSFL01 95: B002 C *IN95 IFEQ *ON : 002 C LEAVE : +002 C ELSE : B003 C S1OPT IFNE *BLANK : 003 C MOVE S1OPT W1OPT : 003 C MOVE *BLANK S1OPT : 003 C MOVE *ON *IN64 :SFLNXTCHG ON 003 C UPDATSFL01 : 003 C EXSR @OPT : B004 C PICNL IFEQ *ON : 004 C LEAVE : E004 C END : E003 C END : E002 C END : E001 C END : C* : C ENDSR : C*----------------------------------------------------* C @OPT BEGSR :PRE-CHECK C*----------------------------------------------------* C Z-ADDRRN01 H1SRCD : C MOVE *OFF PICNL : C* : B001 C W1OPT CASEQ'5 ' @DSP : E001 C END : C* : C ENDSR : C*----------------------------------------------------* C @DSP BEGSR : C*----------------------------------------------------* C*表示処理 : C***** : C***** MOVE H1JNO POJNO 6 : C***** CALL 'ZZI030CL' : C***** PARM POJOB 10 : C***** PARM POUSR 10 : C***** PARM POJNO : C***** PARM PICNL : C***** : C ENDSR : C*----------------------------------------------------* C @MSG BEGSR : C*----------------------------------------------------* C* : C ENDSR : C*----------------------------------------------------* C @EROFF BEGSR : C*----------------------------------------------------* C* : C ENDSR : ** ....1....+....2....+....3....+....4....+....5....+....6....+. F3=終了 F5=再表示 F23=オプション続き ** 2=修正 3=店個別指定 4=削除 5=表示 6=複写 7= OPT7 8= OPT8 9= OPT9 10= OPT10 ... 50= OPT50 52= OPT52 54= OPT54 55= OPT55 60= OPT60 62= OPT62 63= OPT63 ... 71= OPT71 72= OPT72 73= OPT73 80= OPT80 99= OPT99 ...
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||