PX 00.07.18セY/yゥヨg]メI/yク1 [CFP2] 文字分割] 00.08.22 混 L=12728 C=0080 *Z94,Z95,Z96,Z97,Z98,Z99 V42,V43 *1.01 2000.08.13 半角空白分割対応 GOTO *A: * 姓が 名の一部の場合にも対応  *1.02 2000.08.22 メニュ―状態を変更 F=28,28,24 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ サンプルデ―タ 分けるデ―タを入れる列 残りを入れる列~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 東京都品川区何処 2-2-1  神奈川県横浜市西区 北幸1-2  北海道余市郡仁木町 1-2-3  東京都小笠原諸島小笠原村 11  足柄上郡開成町  1 1.瀧太郎 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*<使用目的> *例えば、1列に「梛{ きょう子」のように、空白で区切った氏名が *入っていて、姓と名を違う列として分けたい時。 *住所デ―タから 都道府県 を分けたい時。 * 市郡島 を分けたい時。 *例えば「区」や「町」「,」や「-」で分けたい時。  *注意:画面に、分割したいデ―タの表が必要です。 * 分けたデ―タを入れる列は、ご自分で用意して下さい。  *A   IF T0=0 OR CNT[L]=0 THEN:  COLOR:0:6:2:  LOC:1:6:PRINT: :  LOC:2:6:PRINT: 処理出来る行または列が無いので :  LOC:3:6:PRINT: 実行出来ません。 :  LOC:4:6:PRINT: :  STOP:  ENDIF:   DPOFF:DIA:Z94=Z39:DPON: *Z94 H行   COLOR:7:1:2:  LOC:1:6:PRINT: :  LOC:2:6:PRINT: 都道府県…1 :  LOC:3:6:PRINT: 市郡島 …2 :  LOC:4:6:PRINT: 空白 …3 :  LOC:5:6:PRINT: 文字指定…4 :  LOC:6:6:PRINT: :  Z0=1000:  ACCPNUM:[CFP2] 分けたい方法は? :1:4::?:DP:::  IF Z0=1000 THEN:D:STOP:ENDIF:  IF Z0=2 THEN:GOTO *市郡島:ENDIF:  IF Z0=3 THEN:GOTO *空白:ENDIF:  IF Z0=4 THEN:GOTO *文字指定:ENDIF:  *---------------------------------------------------------------------* *都道府県   Z0=1000:  ACCPNUM:住所デ―タの有る列番号は :1:T0::?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z95=Z0: *Z95 住所デ―タの列番号   Z0=1000:  ACCPNUM:都道府県名を入れる列番号は :1:T0::?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z96=Z0: *Z96 都道府県の列番号   Z0=1000:  ACCPNUM:残りを入れる列番号は :1:T0::?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z97=Z0: *Z97 残りを入れる列番号   DP::Z95: *該当行の時 PRINT が消えるから長い列を表示  COLOR:7:1:2:V0=T1:  LOC:1:6:PRINT: :  LOC:2:6:PRINT: 少々お待ちください :  LOC:3:6:PRINT: :  LOC:4:6:PRINT: 実行行数 :  LOC:5:6:PRINT: :  LOC:5:6:PRINT: デ―タ件数 :  LOC:6:6:PRINT: :  LOC:5:20:PRUSG:&&&&&&/+:T1:  *開始  FOR Z98=Z94 TO T1: *デ―タ行のH〜Tまで  LOC:4:20:PRUSG:&&&&&&/+:Z98:  V43="":  V42=[Z98,Z95]: *V42 住所を代入  IF V42="" THEN:CONTINUE:ENDIF: *内容が無ければ飛ばす  LEN:V42: *文字数を調べる   FOR Z99=1 TO Z0 STEP 1: *1バイトずつ調べる  STRCPY:V42::Z99::2:: *都道府県の抽出  IF V0="都" OR V0="道" OR V0="府" OR V0="県" THEN:  Z99=Z99+1:  STRCPY:V42::1::Z99:"V43":  MATCH:V43:"*東京都":IF Z0=1 THEN:BREAK:ENDIF:  MATCH:V43:"*京都":  IF Z0=1 THEN:V43="":Z99=Z99-1: *京都 府 対応 。oO  ELSE:IF V43="山県" THEN:V43="":ENDIF: *山県 郡  BREAK:  ENDIF:  ENDIF:  NEXT Z99:   [Z98,Z96]=V43: *都道府県名  [Z98,Z97]=V42-V43: *以降  NEXT Z98:  D:   STOP:  *---------------------------------------------------------------------* *市郡島  *Z94,Z95,Z96,Z97,Z98,Z99 V42,V43  * DIA:Z94=Z39: *親メニュ―で統括 *Z94 H行   Z0=1000:  ACCPNUM:住所デ―タの有る列番号は :1:T0:1:?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z95=Z0: *Z95 住所デ―タの列番号   Z0=1000:  ACCPNUM:市郡名を入れる列番号は :1:T0::?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z96=Z0: *Z96 市郡島の列番号   Z0=1000:  ACCPNUM:残りを入れる列番号は :1:T0:1:?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z97=Z0: *Z97 残りを入れる列番号   DP::Z95: *該当行の時 PRINT が消えるから長い列を表示  COLOR:7:1:2:  LOC:1:6:PRINT: :  LOC:2:6:PRINT: 少々お待ちください :  LOC:3:6:PRINT: :  LOC:4:6:PRINT: 実行中番号 :  LOC:5:6:PRINT: :  LOC:5:6:PRINT: 最終行番号 :  LOC:6:6:PRINT: :  LOC:5:20:PRUSG:&&&&&&/+:T1:  *開始  FOR Z98=Z94 TO T1: *デ―タ行のH〜Tまで  LOC:4:20:PRUSG:&&&&&&/+:Z98:  V43="":  V42=[Z98,Z95]-" ": *空間を抜く  IF V42="" THEN:CONTINUE:ENDIF: *デ―タが無い時  LEN:V42: *文字数を調べる   FOR Z99=1 TO Z0 STEP 1: *1バイトずつ調べる  STRCPY:V42::Z99::2:: *市郡島の抽出   IF V0="市" THEN:  Z99=Z99+1:STRCPY:V42::1::Z99:"V43":   *市原市 市川市 八日市場市 今市市 四日市市 八日市市 廿日市市  *余市郡 高市郡  IF V43="市" THEN:GOTO *市続行:ENDIF:  MATCH:V43:"*千葉県市":IF Z0=1 THEN:GOTO *市続行:ENDIF:  MATCH:V43:"*今市":IF Z0=1 THEN:GOTO *市続行:ENDIF:  MATCH:V43:"*八日市":IF Z0=1 THEN:GOTO *市続行:ENDIF:  MATCH:V43:"*四日市":IF Z0=1 THEN:GOTO *市続行:ENDIF:  MATCH:V43:"*廿日市":IF Z0=1 THEN:GOTO *市続行:ENDIF:  MATCH:V43:"*余市":IF Z0=1 THEN:GOTO *市続行:ENDIF:  MATCH:V43:"*日高市":IF Z0=1 THEN:BREAK:ENDIF:  MATCH:V43:"*高市":IF Z0=1 THEN:GOTO *市続行:ENDIF:  BREAK:   *市続行  Z99=Z99-1:V43="":CONTINUE:   ELSE:IF V0="郡" THEN:  Z99=Z99+1:STRCPY:V42::1::Z99:"V43":   *郡山市 蒲郡市 大和郡山市 小郡市  IF V43="郡" THEN:GOTO *郡続行:ENDIF:  MATCH:V43:"*福島県郡":IF Z0=1 THEN:GOTO *郡続行:ENDIF:  MATCH:V43:"*蒲郡":IF Z0=1 THEN:GOTO *郡続行:ENDIF:  MATCH:V43:"*大和郡":IF Z0=1 THEN:GOTO *郡続行:ENDIF:  MATCH:V43:"*小郡":IF Z0=1 THEN:GOTO *郡続行:ENDIF:  BREAK:   *郡続行  Z99=Z99-1:V43="":CONTINUE:   ELSE:IF V0="島" THEN:  Z99=Z99+1:STRCPY:V42::1::Z99:"V43":  MATCH:V43:"*大島":IF Z0=1 THEN:BREAK:ENDIF:  MATCH:V43:"*利島":IF Z0=1 THEN:BREAK:ENDIF:  MATCH:V43:"*新島": IF Z0=1 THEN:BREAK:ENDIF:  MATCH:V43:"*神津島": IF Z0=1 THEN:BREAK:ENDIF:  MATCH:V43:"*三宅島": IF Z0=1 THEN:BREAK:ENDIF:  MATCH:V43:"*御蔵島": IF Z0=1 THEN:BREAK:ENDIF:  MATCH:V43:"*八丈島": IF Z0=1 THEN:BREAK:ENDIF:  MATCH:V43:"*青ケ島": IF Z0=1 THEN:BREAK:ENDIF:  MATCH:V43:"*小笠原諸島": IF Z0=1 THEN:BREAK:ENDIF:   *島続行  Z99=Z99-1:V43="":   ELSE:IF V0="都" THEN:  Z99=Z99+1:STRCPY:V42::1::Z99:"V43":  MATCH:V43:"*東京都": *区町村に東京都が入る  IF Z0=1 THEN: *のを避ける為  MATCH:V42:"*区*":  IF Z0=1 THEN:BREAK:ENDIF:  ENDIF:  Z99=Z99-1:V43="":  ENDIF:  ENDIF:  ENDIF:  ENDIF:   NEXT Z99:   [Z98,Z96]=V43: *都道府県名  [Z98,Z97]=V42-V43: *以降  NEXT Z98:   D:  STOP:  *---------------------------------------------------------------------* *空白  * DIA:Z94=Z39: *親メニュ―で統括 *Z94 H行   Z0=1000:  ACCPNUM:デ―タの有る列番号は :1:T0::?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z95=Z0: *Z95 デ―タの列番号   Z0=1000:  ACCPNUM:空白までのデ―タを入れる列番号は :1:T0::?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z96=Z0: *Z96 左デ―タの列番号   Z0=1000:  ACCPNUM:残りを入れる列番号は :1:T0::?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z97=Z0: *Z97 残りを入れる列番号   DP::Z95: *該当行の時 PRINT が消えるから長い列を表示  COLOR:7:1:2:  LOC:1:6:PRINT: :  LOC:2:6:PRINT: 少々お待ちください :  LOC:3:6:PRINT: :  LOC:4:6:PRINT: 実行中番号 :  LOC:5:6:PRINT: :  LOC:5:6:PRINT: 最終行番号 :  LOC:6:6:PRINT: :  LOC:5:20:PRUSG:&&&&&&/+:Z0:  *開始  FOR Z98=Z94 TO T1: *デ―タ行のH〜Tまで  LOC:4:20:PRUSG:&&&&&&/+:Z98:  V43="":  V42=[Z98,Z95]: *対象デ―タ  IF V42="" THEN:CONTINUE:ENDIF: *デ―タが無い時  Z0=0:LEN:V42: *文字数を調べる   FOR Z99=1 TO Z0 STEP 2: *1バイトずつ調べる  STRCPY:V42::Z99::2:: *対象文字の抽出  IF V0=" " THEN:  Z99=Z99+1:  STRCPY:V42::1::Z99:"V43":  BREAK:  ENDIF:  MATCH:V0:"* *":  IF Z0=1 THEN:  STRCPY:V42::1::Z99:"V43":  BREAK:  ENDIF:  * Z99=Z99-1:V43="":  NEXT Z99:   [Z98,Z96]=V43-" ": *左から対象文字まで  [Z98,Z97]=V42-(V43-" "+" "): *文字より右  NEXT Z98:   D:  STOP:  *---------------------------------------------------------------------* *文字指定  * DIA:Z94=Z39: *親メニュ―で統括 *Z94 H行  *文字  V0="ESC":  ACCP:分けたい文字列は?[例 区] :?:  IF V0="ESC" THEN:STOP:ENDIF:  IF V0="" THEN:BEEP:GOTO *文字:ENDIF:  V44=V0:  LEN:V44:Z90=Z0:   Z0=1000:  ACCPNUM:デ―タの有る列番号は :1:T0::?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z95=Z0: *Z95 デ―タの列番号   Z0=1000:  ACCPNUM:文字までのデ―タを入れる列番号は :1:T0::?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z96=Z0: *Z96 左デ―タの列番号   Z0=1000:  ACCPNUM:残りを入れる列番号は :1:T0::?:  IF Z0=1000 THEN:D:STOP:ENDIF:  Z97=Z0: *Z97 残りを入れる列番号   DP::Z95: *該当行の時 PRINT が消えるから長い列を表示  COLOR:7:1:2:V0=T1:  LOC:1:6:PRINT: :  LOC:2:6:PRINT: 少々お待ちください :  LOC:3:6:PRINT: :  LOC:4:6:PRINT: 実行中番号 :  LOC:5:6:PRINT: :  LOC:5:6:PRINT: 最終行番号 :  LOC:6:6:PRINT: :  LOC:5:20:PRUSG:&&&&&&/+:T1:  *開始  FOR Z98=Z94 TO T1: *デ―タ行のH〜Tまで  LOC:4:20:PRUSG:&&&&&&/+:Z98:  V43="":  V42=" "+[Z98,Z95]: *対象デ―タ  IF V42="" THEN:CONTINUE:ENDIF: *デ―タが無い時  LEN:V42: *文字数を調べる  FOR Z99=1 TO Z0 STEP 1: *1バイトずつ調べる  STRCPY:V42::Z99::Z90:: *対象文字の抽出  IF V0=V44 THEN:  Z99=Z99+Z90-1:STRCPY:V42::1::Z99:"V43":BREAK:  ENDIF:  NEXT Z99:  [Z98,Z96]=V43: *左から対象文字まで  [Z98,Z97]=V42-(V43-V44+V44): *文字より右  NEXT Z98:   D:  STOP: *---------------------------------------------------------------------*