/*

카카오 신입공채 1차 코딩테스트 문제1 비밀지도

 

문제설명

네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.

 

지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 “공백”(“ “) 또는 “벽”(“#”) 두 종류로 이루어져 있다.

전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 “지도 1”과 “지도 2”라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다.

“지도 1”과 “지도 2”는 각각 정수 배열로 암호화되어 있다.

암호화된 배열은 지도의 각 가로줄에서 벽 부분을 1, 공백 부분을 0으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다.

 

이해이미지)

 

 

네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.

 

입력형식

입력으로 지도의 한 변 크기 n 과 2개의 정수 배열 arr1, arr2가 들어온다.

arr1, arr2는 길이 n인 정수 배열로 주어진다.

정수 배열의 각 원소 x를 이진수로 변환했을 때의 길이는 n 이하이다. 즉, 0 ? x ? 2^n - 1을 만족한다.

 

출력형식

원래의 비밀지도를 해독하여 "#", 공백으로 구성된 문자열 배열로 출력하라.

 

문제해설

이 문제는 비트 연산Bitwise Operation을 묻는 문제입니다. 이미 문제 예시에 2진수로 처리하는 힌트가 포함되어 있고, 둘 중 하나가 1일 경우에 벽 #이 생기기 때문에 OR로 처리하면 간단히 풀 수 있습니다. 아주 쉬운 문제였던 만큼 if else로 풀이한 분들도 많이 발견되었는데요. 정답으로는 간주되지만 이 문제는 비트 연산을 잘 다룰 수 있는지를 묻고자 하는 의도였던 만큼 앞으로 이런 유형의 문제를 풀 때는 비트 연산을 꼭 기억하시기 바랍니다.

 

이 문제의 정답률은 81.78%입니다. 첫 번째 문제이고 가장 쉬운 문제였던 만큼 많은 분들이 잘 풀어주셨습니다.

*/

 

public class SecretMap {

 

    public static void main(String[] args) {

        int[] arr1;

        int[] arr2;

        

        arr1 = new int[]{9, 20, 28, 18, 11};

        arr2 = new int[]{30, 1, 21, 17, 28};

        printArr(decodeSecretMap(5, arr1, arr2));

        

        arr1 = new int[]{46, 33, 33 ,22, 31, 50};

        arr2 = new int[]{27 ,56, 19, 14, 14, 10};

        printArr(decodeSecretMap(6, arr1, arr2));

    }

    

    /**

     * 입력받은 arr1, arr2의 각 int를 or연산 처리 

     * -> toBinaryString으로 변환 -> 출력형태에 맞게 문자열 replace

     * @param n

     * @param arr1

     * @param arr2

     * @return

     */

    public static String[] decodeSecretMap(int n, int[] arr1, int[] arr2) {

        String[] retArr = new String[n];

        for(int i = 0; i < n; i++) {

            retArr[i] = Integer.toBinaryString(arr1[i]|arr2[i]).replace("0", " ").replace("1", "#").replace("2", "$").replace("3", "%");

        }

        return retArr;

    }

    

    /**

     * 배열을 입력받아 println

     * @param arr

     */

    public static void printArr(String[] arr) {

        StringBuilder sb = new StringBuilder();

        for(String str: arr) {

            sb.append(", \""+str+"\"");

        }

        System.out.println(sb.toString().replaceFirst(", ", ""));

    }

}

 

/*결과

bash-3.1$

bash-3.1$ java SecretMap

"#####", "# # #", "### #", "#  ##", "#####"

"######", "###  #", "##  ##", "#### ", "#####", "### # "

bash-3.1$

*/

//IPC QUEUE 데이타를 읽어 KAFKA에 전송하는경우

//FILE의 데이타를 읽어서 KAFKA에 전송하는경우(아래소스는 여기에 해당)

/*

* librdkafka - Apache Kafka C library

*

* Copyright (c) 2017, Magnus Edenhill

* All rights reserved.

*

* Redistribution and use in source and binary forms, with or without

* modification, are permitted provided that the following conditions are met:

*

* 1. Redistributions of source code must retain the above copyright notice,

*    this list of conditions and the following disclaimer.

* 2. Redistributions in binary form must reproduce the above copyright notice,

*    this list of conditions and the following disclaimer in the documentation

*    and/or other materials provided with the distribution.

*

* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

* POSSIBILITY OF SUCH DAMAGE.

*/

 

/**

* Simple Apache Kafka producer

* using the Kafka driver from librdkafka

* (https://github.com/edenhill/librdkafka)

*/

 

#include <stdio.h>

#include <signal.h>

#include <string.h>

 

 

/* Typical include path would be <librdkafka/rdkafka.h>, but this program

* is builtin from within the librdkafka source tree and thus differs. */

#include "rdkafka.h"

 

static int run = 1;

 

/**

* @brief Signal termination of program

*/

static void stop (int sig) {

    run = 0;

    fclose(stdin); /* abort fgets() */

}

 

 

/**

* @brief Message delivery report callback.

*

* This callback is called exactly once per message, indicating if

* the message was succesfully delivered

* (rkmessage->err == RD_KAFKA_RESP_ERR_NO_ERROR) or permanently

* failed delivery (rkmessage->err != RD_KAFKA_RESP_ERR_NO_ERROR).

*

* The callback is triggered from rd_kafka_poll() and executes on

* the application's thread.

*/

static void dr_msg_cb (rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque) {

    if (rkmessage->err)

        fprintf(stderr, "%% Message delivery failed: %s\n",

        rd_kafka_err2str(rkmessage->err));

    else

        fprintf(stderr,"%% Message delivered (%zd bytes, ""partition %"PRId32")\n",rkmessage->len, rkmessage->partition);

    /* The rkmessage is destroyed automatically by librdkafka */

}

 

int main (int argc, char **argv) {

    rd_kafka_t *rk;         /* Producer instance handle */

    rd_kafka_topic_t *rkt;  /* Topic object */

    rd_kafka_conf_t *conf;  /* Temporary configuration object */

    char errstr[512];       /* librdkafka API error reporting buffer */

    char buf[512];          /* Message value temporary buffer */

    const char *brokers;    /* Argument: broker list */

    const char *topic;      /* Argument: topic to produce to */

 

    FILE *fp=NULL;

 

    /*

     * Argument validation

     */

    if (argc != 4) {

        fprintf(stderr, "%% Usage: %s <broker> <topic> <filename>\n", argv[0]);

        return -1;

    }

 

    brokers = argv[1];   //127.0.0.1:9092

 

    //1.1 기본적인 topic 생성예제(topic의 이름은 test)

    //>bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

    //1.2 일자별로 topic생성(아래예제는 20180401 ~ 20180431, 4월 날짜별로 topic생성)

    //>for ii in `seq 20180401 20180431`; do bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic $ii; done

 

    //3. Step 3: Create a topic

    //3.1 Let's create a topic named "test" with a single partition and only one replica:

    // for ii in `seq 20180411 20180431`; do bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic $ii; done

    //> cd /home1/irteamsu/kafka2/kafka_2.11-1.1.0

    //> bin/kafka-server-start.sh config/server.properties

    //3.2 TOPIC리스트 확인

    //> bin/kafka-topics.sh --list --zookeeper localhost:2181

    

    topic   = argv[2];   //YYYYMMDD

 

    if((fp=fopen(argv[3], "rt"))==NULL) return(-1);

    /*

     * Create Kafka client configuration place-holder

     */

    conf = rd_kafka_conf_new();

 

    /* Set bootstrap broker(s) as a comma-separated list of

     * host or host:port (default port 9092).

     * librdkafka will use the bootstrap brokers to acquire the full

     * set of brokers from the cluster. */

    if (rd_kafka_conf_set(conf, "bootstrap.servers", brokers,errstr, sizeof(errstr)) != RD_KAFKA_CONF_OK) 

    {

        fprintf(stderr, "%s\n", errstr);

        return -1;

    }

 

    /* Set the delivery report callback.

     * This callback will be called once per message to inform

     * the application if delivery succeeded or failed.

     * See dr_msg_cb() above. */

    rd_kafka_conf_set_dr_msg_cb(conf, dr_msg_cb);

 

 

    /*

     * Create producer instance.

     *

     * NOTE: rd_kafka_new() takes ownership of the conf object

     *       and the application must not reference it again after

     *       this call.

     */

    rk = rd_kafka_new(RD_KAFKA_PRODUCER, conf, errstr, sizeof(errstr));

    if (!rk) {

        fprintf(stderr,

            "%% Failed to create new producer: %s\n", errstr);

        return -1;

    }

 

 

    /* Create topic object that will be reused for each message

     * produced.

     *

     * Both the producer instance (rd_kafka_t) and topic objects (topic_t)

     * are long-lived objects that should be reused as much as possible.

     */

    rkt = rd_kafka_topic_new(rk, topic, NULL);

    if (!rkt) {

        fprintf(stderr, "%% Failed to create topic object: %s\n",

        rd_kafka_err2str(rd_kafka_last_error()));

        rd_kafka_destroy(rk);

        return -1;

    }

 

    /* Signal handler for clean shutdown */

    signal(SIGINT, stop);

 

    fprintf(stderr,

        "%% Type some text and hit enter to produce message\n"

        "%% Or just hit enter to only serve delivery reports\n"

        "%% Press Ctrl-C or Ctrl-D to exit\n");

 

    while (run) 

    {

        memset(buf, 0x00, sizeof(buf));

        if(fgets(buf, sizeof(buf), fp)==NULL) break;

 

        size_t len = strlen(buf);

 

        if (buf[len-1] == '\n') /* Remove newline */

        buf[--len] = '\0';

 

        if (len == 0) {

            /* Empty line: only serve delivery reports */

            rd_kafka_poll(rk, 0/*non-blocking */);

            continue;

        }

 

    /*

     * Send/Produce message.

     * This is an asynchronous call, on success it will only

     * enqueue the message on the internal producer queue.

     * The actual delivery attempts to the broker are handled

     * by background threads.

     * The previously registered delivery report callback

     * (dr_msg_cb) is used to signal back to the application

     * when the message has been delivered (or failed).

     */

    retry:

        if (rd_kafka_produce(

            /* Topic object */

            rkt,

            /* Use builtin partitioner to select partition*/

            RD_KAFKA_PARTITION_UA,

            /* Make a copy of the payload. */

            RD_KAFKA_MSG_F_COPY,

            /* Message payload (value) and length */

            buf, len,

            /* Optional key and its length */

            NULL, 0,

            /* Message opaque, provided in

             * delivery report callback as

             * msg_opaque. */

            NULL) == -1)

        {

            /**

             * Failed to *enqueue* message for producing.

             */

            fprintf(stderr,

            "%% Failed to produce to topic %s: %s\n",

            rd_kafka_topic_name(rkt),

            rd_kafka_err2str(rd_kafka_last_error()));

 

            /* Poll to handle delivery reports */

            if (rd_kafka_last_error() ==

                RD_KAFKA_RESP_ERR__QUEUE_FULL) {

                /* If the internal queue is full, wait for

                 * messages to be delivered and then retry.

                 * The internal queue represents both

                 * messages to be sent and messages that have

                 * been sent or failed, awaiting their

                 * delivery report callback to be called.

                 *

                 * The internal queue is limited by the

                 * configuration property

                 * queue.buffering.max.messages */

                rd_kafka_poll(rk, 1000/*block for max 1000ms*/);

                goto retry;

            }

        

        else 

        {

            fprintf(stderr, "%% Enqueued message (%zd bytes) "

                "for topic %s\n",

                len, rd_kafka_topic_name(rkt));

        }

 

 

        /* A producer application should continually serve

         * the delivery report queue by calling rd_kafka_poll()

         * at frequent intervals.

         * Either put the poll call in your main loop, or in a

         * dedicated thread, or call it after every

         * rd_kafka_produce() call.

         * Just make sure that rd_kafka_poll() is still called

         * during periods where you are not producing any messages

         * to make sure previously produced messages have their

         * delivery report callback served (and any other callbacks

         * you register). */

        rd_kafka_poll(rk, 0/*non-blocking*/);

    }

 

    /* Wait for final messages to be delivered or fail.

     * rd_kafka_flush() is an abstraction over rd_kafka_poll() which

     * waits for all messages to be delivered. 

     */

    fprintf(stderr, "%% Flushing final messages..\n");

    rd_kafka_flush(rk, 10*1000 /* wait for max 10 seconds */);

 

    /* Destroy topic object */

    rd_kafka_topic_destroy(rkt);

 

    /* Destroy the producer instance */

    rd_kafka_destroy(rk);

 

    return 0;

}

 

 

'통신 > THREAD(TCP)' 카테고리의 다른 글

RcvManualData.c  (0) 2021.03.17

//ORDR_DT = YYYYMMDD

//ORDR_DT = YYYYMMDD

//ORDR_DT = YYYYMMDD

//ORDR_DT = YYYYMMDD

//ORDR_DT = YYYYMMDD

//ORDR_DT = YYYYMMDD

 

DELETE FROM OPS_ORDER WHERE ORDR_DT <= date_format(date_add(now(), INTERVAL -1 MONTH), '%Y%m%d');

MySQL LOCK 확인 및 해제(kill) 방법

 

MySQL 사용 시 관리자의 의도 혹은 그렇지 않은 이유들로 인해 Lock 상태가 발생한다.

이럴 경우 어느 쿼리가 Lock을 걸렸는지 확인 후 해당 쿼리를 해제(kill) 해야 할 상황이 있다.

 

Lock의 종류

 

Table Lock, User Lock, Global Lock, Name Lock이 있다. 트랜잭션 기반의 멀티 쓰레드를 사용하려면 Lock의 개념을 충분히 알아두어야 한다. 하지만 그렇지 못한 몇몇 프로그래머로 인해 다른 사용자들이 쿼리 대기상태(Lock으로 인한 리소스 접근 대기상태)로 서비스에 지장을 초래할 수 있다.

흔히들 알고있는 Read Lock, Write Lock은 Table, Global Lock 등에 포함된 내용이므로 이를 혼동해서 사용하지 않도록 하자.

이 포스팅은 Lock에 대한 개념을 다루지 않으므로, 보다 자세한 사항은 다른 포스팅을 참조하여 공부하고, Lock이 걸려있는 프로세스의 확인 및 해제를 다뤄보자.

 

Lock 확인 및 해제

 

아래 쿼리를 통해 현재 프로세스를 확인할 수 있다.

 

1. SHOW PROCESSLIST;

cs

(위 쿼리는 100개까지 list를 노출하며, 모두 노출 하려면 SHOW FULL PROCESSLIST;로 하면 된다.)

 

State컬럼을 보면 Waiting for table metadata lock 으로 인해 해당 쿼리가 진행되지 않음을 확인 할 수 있다.

그러면 이 프로세스를 해제(kill)해보자.

 

2. KILL 255;

cs

위 쿼리를 통해 lock을 해제할 수 있다.

 

 

원인

 

해당 테이블이 DDL을 통해 open상태일 경우.

선행 트랜잭션이 종료가 되지 않았을 경우 종료를 위한 DDL 구문 실행 대기.

보통 metadata lock info라는 별도의 플로그인을 통해 확인 할 수 있으나 불가능한 경우도 있다.

(트랜잭션 중 autocommit이 false일 때, commit을 수행하지 않고 DDL을 실행할 경우)

 

 

마무리

개발 중 문제에 봉착했을 때, 해결법에 대한 포스팅만 보고 해결하지 말고

원인을 분석하고 공부하다보면 내것으로 만들 수 있다는 생각으로 시간을 가지고 투자하면서

배움의 자세를 가지도록 노력하자.

 


#innodb_flush_log_at_trx_commit 에 따른 입력건수 성능비교
#innodb_flush_log_at_trx_commit 에 따른 입력건수 성능비교
#innodb_flush_log_at_trx_commit 에 따른 입력건수 성능비교
#innodb_flush_log_at_trx_commit 에 따른 입력건수 성능비교
#innodb_flush_log_at_trx_commit 에 따른 입력건수 성능비교

 

 

#QUEUE사용안함
#QUEUE사용안함

 

#QUEUE사용안함

#SERIAL형식의 입력
#SERIAL형식의 입력
#SERIAL형식의 입력
#SERIAL형식의 입력

 

mysql> select sum(T2.t_cnt) from DUMMY T1, (select substr(regtime,1,17) as t_regtime, count(1) as t_cnt from RB_OCUS_POS_TEST2 group by substr(regtime,1,17)) T2;
+---------------+
| sum(T2.t_cnt) |
+---------------+
|        161297 |
+---------------+
1 row in set (0.26 sec)

mysql>

mysql> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 1     |
+--------------------------------+-------+
1 row in set (0.04 sec)

1SEC > 647.7791164658635 입력

mysql> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 0     |
+--------------------------------+-------+
1 row in set (0.04 sec)

>>begin[20190829 07:23:04(988)],end[20190829 07:23:23(968)]

1SEC > 8489.315789473684 입력

mysql> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 2     |
+--------------------------------+-------+
1 row in set (0.04 sec)

>>begin[20190829 07:25:41(568)],end[20190829 07:26:05(191)]

1SEC > 6451.88 입력 























//pointer memory use instead of structure stack memory

//pointer memory use instead of structure stack memory

//pointer memory use instead of structure stack memory

//pointer memory use instead of structure stack memory

 

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

 

#define MAX_ADDRESS_CNT 200

 

struct st_basic_trade

{

    char dataclass[2];

    char infoclass[2];

    char marketclass[1];

    char stockcode[12];

    char serialno[8];

    char abbrstockcode[9];

    char abbrstocknamekor[40];

    char abbrstocknameeng[40];

    char senddate[8];

    char infodivisiongroupno[5];

    char stockgroupid[2];

    char isunittrade[1];

    char exclasscode[2];

    char facevaluechangeclasscode[2];

    char isopenpricebasedstandardprice[1];

    char isrevaluationstockreason[2];

    char isstandardpricechangestock[1];

    char israndomendpossibillty[1];

    char ismarketalarmdangernotice[1];

    char marketalarmclasscode[2];

    char iscorporategovernancefine[1];

    char ismanagementstock[1];

    char isinsinceritypublicnewsappoint[1];

    char isbackdoorlisting[1];

    char istradestop[1];

    char indexbusinesstypelarge[3];

    char indexbusinesstypemedium[3];

    char indexbusinesstypesmall[3];

    char standardindustrycode[10];

    char businesstypekospi200[1];

    char listpricesizecode[1];

    char ismanufactureindustry[1];

    char iskrx100stock[1];

    char isdividendindexstock[1];

    char iscorporategovernanceindexstock[1];

    char investorganclasscode[2];

    char iskospi[1];

    char iskospi100[1];

    char iskospi50[1];

    char iskrxsectorindexcar[1];

    char iskrxsectorindexsemiconductor[1];

    char iskrxsectorindexbio[1];

    char iskrxsectorindexfinance[1];

    char iskrxsectorindexit[1];

    char iskrxsectorindexenergychemical[1];

    char iskrxsectorindexsteel[1];

    char iskrxsectorindexnecessary[1];

    char iskrxsectorindexmediacomm[1];

    char iskrxsectorindexconstruction[1];

    char iskrxsectorindexfinanceservice[1];

    char iskrxsectorindexstock[1];

    char iskrxsectorindexship[1];

    char standardprice[9];

    char ydayclosepriceclasscode[1];

    char ydaycloseprice[9];

    char ydayaccmvolume[12];

    char ydayaccmamount[18];

    char uplimitprice[9];

    char downlimitprice[9];

    char substituteprice[9];

    char facevalue[12];

};

 

int main(int argc, char *argv[])

{

    struct st_basic_trade st_basic_trade[MAX_ADDRESS_CNT];

 

struct st_basic_trade *address_byte_trade1;

struct st_basic_trade *address_byte_trade2;

struct st_basic_trade *address_byte_trade_tmp;

 

char *address_byte[MAX_ADDRESS_CNT];//st_basic_trade structure address saving pointer array

char *address_byte_tmp;//st_basic_trade structure address saving pointer

 

    FILE *fp=NULL;//file pointer

char rbuf[4096];//file read buffer

 

char tmp1[200];

char tmp2[200];

int ii,kk,continue_tmp;

int st_basic_trade_cnt;

 

if((fp=fopen("BATCH_A0011.dat", "rt"))==NULL)

{

return(-1);

}

 

    //DATA MEMORY INIT

//DATA MEMORY INIT

for(kk=0; kk<MAX_ADDRESS_CNT; kk++)

{

memset(&st_basic_trade[kk],0x00,sizeof(st_basic_trade[kk]));

}

 

    //DATA LOAD FROM FILE

//DATA LOAD FROM FILE

    kk=0;

while(1)

{

memset(rbuf,0x00,sizeof(rbuf));

if(fgets(rbuf,sizeof(rbuf),fp)==NULL) break;

 

memcpy(&st_basic_trade[kk], rbuf, (int)sizeof(st_basic_trade[kk]));

 

continue_tmp=-1;

 

if(memcmp(st_basic_trade[kk].stockgroupid,"ST",2)==0) continue_tmp=100;

        if(memcmp(st_basic_trade[kk].stockgroupid,"EF",2)==0) continue_tmp=100;

        if(memcmp(st_basic_trade[kk].stockgroupid,"RT",2)==0) continue_tmp=100;

        if(memcmp(st_basic_trade[kk].stockgroupid,"MF",2)==0) continue_tmp=100;

        if(memcmp(st_basic_trade[kk].stockgroupid,"SC",2)==0) continue_tmp=100;

        if(memcmp(st_basic_trade[kk].stockgroupid,"IF",2)==0) continue_tmp=100;

        if(memcmp(st_basic_trade[kk].stockgroupid,"DR",2)==0) continue_tmp=100;

        if(memcmp(st_basic_trade[kk].stockgroupid,"FS",2)==0) continue_tmp=100;

     if(memcmp(st_basic_trade[kk].stockgroupid,"EN",2)==0) continue_tmp=100;

 

if(continue_tmp<0) continue;

kk++;

 

if(kk==MAX_ADDRESS_CNT) break;

}

st_basic_trade_cnt=kk;

if(fp != NULL) fclose(fp);

 

//POINTER MEMORY USE INSTEAD OF STRUCTURE STACK MEMORY

//POINTER MEMORY USE INSTEAD OF STRUCTURE STACK MEMORY

for(kk=0; kk<st_basic_trade_cnt; kk++)

{

address_byte[kk] = (char *)&st_basic_trade[kk];

}

 

    //DESCENDING BY POINTER MEMORY

//DESCENDING BY POINTER MEMORY

for(kk=0; kk<st_basic_trade_cnt; kk++)

{

for(ii=kk+1; ii<st_basic_trade_cnt; ii++)

{

address_byte_trade1 = (struct st_basic_trade *)address_byte[kk];

address_byte_trade2 = (struct st_basic_trade *)address_byte[ii];

 

memset(tmp1,0x00,sizeof(tmp1));

memset(tmp2,0x00,sizeof(tmp2));

 

sprintf(tmp1, "%.*s", (int)sizeof(address_byte_trade1->standardprice), address_byte_trade1->standardprice);

sprintf(tmp2, "%.*s", (int)sizeof(address_byte_trade2->standardprice), address_byte_trade2->standardprice);

 

if(atoi(tmp1) > atoi(tmp2))

{

address_byte_tmp=address_byte[kk];

address_byte[kk]=address_byte[ii];

address_byte[ii]=address_byte_tmp;

}

}

}

 

//RESULT DISPLAY

//RESULT DISPLAY

for(kk=0; kk<st_basic_trade_cnt; kk++)

{

address_byte_trade_tmp = (struct st_basic_trade *)address_byte[kk];

 

printf(

    "[%.4d]:"

    "(%.*s)"

    "(%.*s)"

    "(%.*s)"

    "(%.*s)"

    "(%.*s)"

    "(%.*s)"

    "(%.*s)"

    "(%.*s)"

    "(%.*s)"

    "(%.*s)"

    "(%.*s)"

    "(%.*s)"

    "\n"

kk+1,

(int)sizeof(address_byte_trade_tmp->iskospi),address_byte_trade_tmp->iskospi,

(int)sizeof(address_byte_trade_tmp->dataclass),address_byte_trade_tmp->dataclass,

(int)sizeof(address_byte_trade_tmp->infoclass),address_byte_trade_tmp->infoclass,

(int)sizeof(address_byte_trade_tmp->serialno),address_byte_trade_tmp->serialno,

(int)sizeof(address_byte_trade_tmp->stockgroupid),address_byte_trade_tmp->stockgroupid,

(int)sizeof(address_byte_trade_tmp->abbrstockcode),address_byte_trade_tmp->abbrstockcode,

(int)sizeof(address_byte_trade_tmp->standardprice),address_byte_trade_tmp->standardprice,

(int)sizeof(address_byte_trade_tmp->ydayaccmvolume),address_byte_trade_tmp->ydayaccmvolume,

(int)sizeof(address_byte_trade_tmp->ydayaccmamount),address_byte_trade_tmp->ydayaccmamount,

(int)sizeof(address_byte_trade_tmp->uplimitprice),address_byte_trade_tmp->uplimitprice,

(int)sizeof(address_byte_trade_tmp->downlimitprice),address_byte_trade_tmp->downlimitprice,

(int)sizeof(address_byte_trade_tmp->abbrstocknameeng),address_byte_trade_tmp->abbrstocknameeng);

}

return(0);

}

 

/*RESULT

[0140]:(Y)(A0)(01)(00000068)(ST)(A000860  )(000035500)(000000012109)(000000000427932950)(000046150)(000024850)(KANGNAM JEVISCO                         )

[0141]:(Y)(A0)(01)(00000069)(ST)(A000880  )(000035550)(000000250112)(000000008841239150)(000046200)(000024900)(Hanwha                                  )

[0142]:(Y)(A0)(01)(00000161)(ST)(A002390  )(000035800)(000000175128)(000000006200375550)(000046500)(000025100)(HANDOK                                  )

[0143]:(Y)(A0)(01)(00000062)(ST)(A000720  )(000036000)(000000935395)(000000033665525250)(000046800)(000025200)(HyundaiEng&Const                        )

[0144]:(Y)(A0)(01)(00000168)(ST)(A002620  )(000037150)(000000043866)(000000001645729300)(000048250)(000026050)(JeilPharm                               )

[0145]:(Y)(A0)(01)(00000031)(ST)(A000180  )(000038150)(000000051172)(000000001962002000)(000049550)(000026750)(SCEHoldings                             )

[0146]:(Y)(A0)(01)(00000080)(ST)(A001060  )(000040300)(000000157559)(000000006374627600)(000052300)(000028250)(JWPHARMA                                )

[0147]:(Y)(A0)(01)(00000082)(ST)(A001067  )(000042550)(000000000536)(000000000022519300)(000055300)(000029800)(JWPHARMA(2PB)                           )

[0148]:(Y)(A0)(01)(00000063)(ST)(A000725  )(000043150)(000000000564)(000000000024648550)(000056000)(000030250)(HyundaiEng&Con(1P)                      )

[0149]:(Y)(A0)(01)(00000039)(ST)(A000270  )(000043550)(000001342543)(000000058170323500)(000056600)(000030500)(KiaMtr                                  )

[0150]:(Y)(A0)(01)(00000147)(ST)(A002170  )(000044500)(000000010952)(000000000488631300)(000057800)(000031150)(SamyangTongsang                         )

[0151]:(Y)(A0)(01)(00000163)(ST)(A002420  )(000045400)(000000001276)(000000000057439100)(000059000)(000031800)(Century                                 )

[0152]:(Y)(A0)(01)(00000126)(ST)(A001745  )(000045750)(000000001253)(000000000058412550)(000059400)(000032050)(SKNetworks(1P)                          )

[0153]:(Y)(A0)(01)(00000124)(ST)(A001725  )(000046950)(000000000551)(000000000025664750)(000061000)(000032900)(ShinyoungSecu(1P)                       )

[0154]:(Y)(A0)(01)(00000123)(ST)(A001720  )(000049550)(000000002054)(000000000101791900)(000064400)(000034700)(ShinyoungSecu                           )

[0155]:(Y)(A0)(01)(00000030)(ST)(A000157  )(000050500)(000000000118)(000000000005902400)(000065600)(000035400)(DOOSAN(2PB)                             )

[0156]:(Y)(A0)(01)(00000067)(ST)(A000850  )(000050800)(000000001558)(000000000079929400)(000066000)(000035600)(HMT                                     )

[0157]:(Y)(A0)(01)(00000029)(ST)(A000155  )(000051000)(000000001053)(000000000053774400)(000066300)(000035700)(DOOSAN(1P)                              )

[0158]:(Y)(A0)(01)(00000192)(ST)(A003030  )(000051800)(000000009657)(000000000494291400)(000067300)(000036300)(SeAhStl                                 )

[0159]:(Y)(A0)(01)(00000073)(ST)(A000950  )(000053000)(000000001352)(000000000072137200)(000068900)(000037100)(Chonbang                                )

[0160]:(Y)(A0)(01)(00000156)(ST)(A002320  )(000053200)(000000053672)(000000002833688300)(000069100)(000037300)(HanjinTrnspt                            )

[0161]:(Y)(A0)(01)(00000196)(ST)(A003080  )(000055200)(000000000851)(000000000046476300)(000071700)(000038700)(SungboChem                              )

[0162]:(Y)(A0)(01)(00000083)(ST)(A001070  )(000056400)(000000001586)(000000000088415000)(000073300)(000039500)(TaihanTextl                             )

[0163]:(Y)(A0)(01)(00000137)(ST)(A001940  )(000058300)(000000002805)(000000000163564100)(000075700)(000040900)(KISCO Holdings                          )

[0164]:(Y)(A0)(01)(00000114)(ST)(A001530  )(000059200)(000000001443)(000000000085351600)(000076900)(000041500)(Dongil                                  )

[0165]:(Y)(A0)(01)(00000197)(ST)(A003090  )(000063200)(000000007172)(000000000457728500)(000082100)(000044300)(Daewoong                                )

[0166]:(Y)(A0)(01)(00000057)(ST)(A000650  )(000063600)(000000000824)(000000000053056100)(000082600)(000044600)(ChunilExp                               )

[0167]:(Y)(A0)(01)(00000140)(ST)(A002020  )(000070600)(000000044170)(000000003133398600)(000091700)(000049500)(KOLON CORP                              )

[0168]:(Y)(A0)(01)(00000028)(ST)(A000150  )(000072400)(000000117697)(000000008567840400)(000094100)(000050700)(DOOSAN                                  )

[0169]:(Y)(A0)(01)(00000055)(ST)(A000590  )(000072600)(000000001684)(000000000122223400)(000094300)(000050900)(CSHOLDINGS                              )

[0170]:(Y)(A0)(01)(00000032)(ST)(A000210  )(000077600)(000000148934)(000000011570941400)(000100500)(000054400)(DaelimInd                               )

[0171]:(Y)(A0)(01)(00000020)(ST)(A000075  )(000077800)(000000000177)(000000000013515400)(000101000)(000054500)(SAMYANGHOLDINGS(1P)                     )

[0172]:(Y)(A0)(01)(00000048)(ST)(A000480  )(000080600)(000000000412)(000000000033291100)(000104500)(000056500)(ChosunRefrctr                           )

[0173]:(Y)(A0)(01)(00000179)(ST)(A002795  )(000087500)(000000052984)(000000004654231400)(000113500)(000061300)(AmoreG(1P)                              )

[0174]:(Y)(A0)(01)(00000205)(ST)(A003300  )(000094800)(000000020468)(000000001954590400)(000123000)(000066400)(HanilCement                             )

[0175]:(Y)(A0)(01)(00000142)(ST)(A002030  )(000098300)(000000000761)(000000000074790600)(000127500)(000068900)(ASIA HOLDINGS                           )

[0176]:(Y)(A0)(01)(00000198)(ST)(A003120  )(000107500)(000000000483)(000000000051978500)(000139500)(000075500)(IlsungPharm                             )

[0177]:(Y)(A0)(01)(00000119)(ST)(A001630  )(000120000)(000000020708)(000000002442273500)(000156000)(000084000)(CHONGKUNDANG HOLDINGS                   )

[0178]:(Y)(A0)(01)(00000079)(ST)(A001045  )(000135000)(000000002881)(000000000387653500)(000175500)(000094500)(CJ(1P)                                  )

[0179]:(Y)(A0)(01)(00000200)(ST)(A003200  )(000148000)(000000001833)(000000000268996500)(000192000)(000104000)(IlshinSpng                              )

[0180]:(Y)(A0)(01)(00000178)(ST)(A002790  )(000161000)(000000715462)(000000113395522000)(000209000)(000113000)(AmoreG                                  )

[0181]:(Y)(A0)(01)(00000167)(ST)(A002600  )(000161000)(000000000169)(000000000027542500)(000209000)(000113000)(CHOHEUNG                                )

[0182]:(Y)(A0)(01)(00000019)(ST)(A000070  )(000177000)(000000028579)(000000005043584000)(000230000)(000124000)(SAMYANGHOLDINGS                         )

[0183]:(Y)(A0)(01)(00000182)(ST)(A002840  )(000179000)(000000000063)(000000000011328500)(000232500)(000125500)(MiwonComcl                              )

[0184]:(Y)(A0)(01)(00000086)(ST)(A001130  )(000184000)(000000000647)(000000000119095000)(000239000)(000129000)(DaehanFlrMill                           )

[0185]:(Y)(A0)(01)(00000024)(ST)(A000105  )(000190000)(000000000029)(000000000005484500)(000247000)(000133000)(Yuhan(1P)                               )

[0186]:(Y)(A0)(01)(00000066)(ST)(A000815  )(000195000)(000000003175)(000000000613795000)(000253500)(000136500)(SamsungF&MIns(1P)                       )

[0187]:(Y)(A0)(01)(00000105)(ST)(A001465  )(000198500)(000000000076)(000000000015081500)(000258000)(000139000)(BYC(1P)                                 )

[0188]:(Y)(A0)(01)(00000017)(ST)(A000050  )(000203000)(000000001581)(000000000318739000)(000263500)(000142500)(Kyungbang                               )

[0189]:(Y)(A0)(01)(00000056)(ST)(A000640  )(000214000)(000000013643)(000000002898145500)(000278000)(000150000)(Donga Socio Holdings                    )

[0190]:(Y)(A0)(01)(00000025)(ST)(A000120  )(000216000)(000000029404)(000000006392050500)(000280500)(000151500)(CJ korea express                        )

[0191]:(Y)(A0)(01)(00000078)(ST)(A001040  )(000281500)(000000039434)(000000011175365500)(000365500)(000197500)(CJ                                      )

[0192]:(Y)(A0)(01)(00000065)(ST)(A000810  )(000303500)(000000038064)(000000011500917820)(000394500)(000212500)(SamsungF&MIns                           )

[0193]:(Y)(A0)(01)(00000023)(ST)(A000100  )(000330000)(000000030710)(000000010129506500)(000429000)(000231000)(Yuhan                                   )

[0194]:(Y)(A0)(01)(00000160)(ST)(A002380  )(000432000)(000000014528)(000000006278496500)(000561000)(000302500)(KCC                                     )

[0195]:(Y)(A0)(01)(00000187)(ST)(A002960  )(000485000)(000000000772)(000000000378426000)(000630000)(000339500)(HankookShellOil                         )

[0196]:(Y)(A0)(01)(00000104)(ST)(A001460  )(000532000)(000000000326)(000000000172720000)(000691000)(000373000)(BYC                                     )

[0197]:(Y)(A0)(01)(00000059)(ST)(A000670  )(000931000)(000000001930)(000000001790511000)(001210000)(000652000)(Youngpoong                              )

[0198]:(Y)(A0)(01)(00000153)(ST)(A002270  )(000943000)(000000003189)(000000002984664000)(001225000)(000661000)(LotteFood                               )

[0199]:(Y)(A0)(01)(00000203)(ST)(A003240  )(000986000)(000000000664)(000000000656189000)(001281000)(000691000)(TaekwangInd                             )

[0200]:(Y)(A0)(01)(00000134)(ST)(A001800  )(001028000)(000000010402)(000000010702212000)(001336000)(000720000)(ORION                                   )

bash-3.1$

*/

#include <stdio.h>

#include <string.h>

 

typedef struct ____HM

{

int hh;

int mm;

}HM;

 

//시간(HH:MM)10:00에서 unit(MINUTE)만큼 뺄때에 구해지는 HH:MM을 계산

//시간(HH:MM)10:00에서 unit(MINUTE)만큼 뺄때에 구해지는 HH:MM을 계산

//시간(HH:MM)10:00에서 unit(MINUTE)만큼 뺄때에 구해지는 HH:MM을 계산

//시간(HH:MM)10:00에서 unit(MINUTE)만큼 뺄때에 구해지는 HH:MM을 계산

//시간(HH:MM)10:00에서 unit(MINUTE)만큼 뺄때에 구해지는 HH:MM을 계산

//시간(HH:MM)10:00에서 unit(MINUTE)만큼 뺄때에 구해지는 HH:MM을 계산

//시간(HH:MM)10:00에서 unit(MINUTE)만큼 뺄때에 구해지는 HH:MM을 계산

//시간(HH:MM)10:00에서 unit(MINUTE)만큼 뺄때에 구해지는 HH:MM을 계산

void ____get_hour_min(HM *sihm, int unit)

{

   int divide_hh, divide_mm, share;

 

   divide_hh = (int)(unit / 60);

   divide_mm = unit - (int)(unit / 60) * 60;

   if(divide_mm > 0) share = 1;

   else share = 0;

 

   sihm->hh = 10 - divide_hh - share;

 

   if(share==1) sihm->mm = 60 - divide_mm;

   else sihm->mm = divide_mm;

}

 

int main(int argc, char *argv[])

{

HM sihm;

    int kk;

 

    //10:00에서 61분에서 300분까지를 빼서 나오는결과를 출력

//10:00에서 61분에서 300분까지를 빼서 나오는결과를 출력

//10:00에서 61분에서 300분까지를 빼서 나오는결과를 출력

//10:00에서 61분에서 300분까지를 빼서 나오는결과를 출력

//10:00에서 61분에서 300분까지를 빼서 나오는결과를 출력

//10:00에서 61분에서 300분까지를 빼서 나오는결과를 출력

//10:00에서 61분에서 300분까지를 빼서 나오는결과를 출력

//10:00에서 61분에서 300분까지를 빼서 나오는결과를 출력

//10:00에서 61분에서 300분까지를 빼서 나오는결과를 출력

for(kk=61; kk<300; kk++)

{

____get_hour_min( &sihm, kk);

 

printf("MINUTE(%.6d),sihm.hh(%d),sihm.mm(%d)=HH:MM(%02d:%02d)\n", kk, sihm.hh, sihm.mm, sihm.hh, sihm.mm);

}

return(0);

}

 

/*

bash-3.1$ gcc -c 61.c

bash-3.1$

bash-3.1$

bash-3.1$

bash-3.1$ gcc -o 61 61.o

bash-3.1$

bash-3.1$

bash-3.1$

bash-3.1$ 61

MINUTE(000061),sihm.hh(08),sihm.mm(59)=HH:MM(08:59)

MINUTE(000062),sihm.hh(08),sihm.mm(58)=HH:MM(08:58)

MINUTE(000063),sihm.hh(08),sihm.mm(57)=HH:MM(08:57)

MINUTE(000064),sihm.hh(08),sihm.mm(56)=HH:MM(08:56)

MINUTE(000065),sihm.hh(08),sihm.mm(55)=HH:MM(08:55)

MINUTE(000066),sihm.hh(08),sihm.mm(54)=HH:MM(08:54)

MINUTE(000067),sihm.hh(08),sihm.mm(53)=HH:MM(08:53)

MINUTE(000068),sihm.hh(08),sihm.mm(52)=HH:MM(08:52)

MINUTE(000069),sihm.hh(08),sihm.mm(51)=HH:MM(08:51)

MINUTE(000070),sihm.hh(08),sihm.mm(50)=HH:MM(08:50)

MINUTE(000071),sihm.hh(08),sihm.mm(49)=HH:MM(08:49)

MINUTE(000072),sihm.hh(08),sihm.mm(48)=HH:MM(08:48)

MINUTE(000073),sihm.hh(08),sihm.mm(47)=HH:MM(08:47)

MINUTE(000074),sihm.hh(08),sihm.mm(46)=HH:MM(08:46)

MINUTE(000075),sihm.hh(08),sihm.mm(45)=HH:MM(08:45)

MINUTE(000076),sihm.hh(08),sihm.mm(44)=HH:MM(08:44)

MINUTE(000077),sihm.hh(08),sihm.mm(43)=HH:MM(08:43)

MINUTE(000078),sihm.hh(08),sihm.mm(42)=HH:MM(08:42)

MINUTE(000079),sihm.hh(08),sihm.mm(41)=HH:MM(08:41)

MINUTE(000080),sihm.hh(08),sihm.mm(40)=HH:MM(08:40)

MINUTE(000081),sihm.hh(08),sihm.mm(39)=HH:MM(08:39)

MINUTE(000082),sihm.hh(08),sihm.mm(38)=HH:MM(08:38)

MINUTE(000083),sihm.hh(08),sihm.mm(37)=HH:MM(08:37)

MINUTE(000084),sihm.hh(08),sihm.mm(36)=HH:MM(08:36)

MINUTE(000085),sihm.hh(08),sihm.mm(35)=HH:MM(08:35)

MINUTE(000086),sihm.hh(08),sihm.mm(34)=HH:MM(08:34)

MINUTE(000087),sihm.hh(08),sihm.mm(33)=HH:MM(08:33)

MINUTE(000088),sihm.hh(08),sihm.mm(32)=HH:MM(08:32)

MINUTE(000089),sihm.hh(08),sihm.mm(31)=HH:MM(08:31)

MINUTE(000090),sihm.hh(08),sihm.mm(30)=HH:MM(08:30)

MINUTE(000091),sihm.hh(08),sihm.mm(29)=HH:MM(08:29)

MINUTE(000092),sihm.hh(08),sihm.mm(28)=HH:MM(08:28)

MINUTE(000093),sihm.hh(08),sihm.mm(27)=HH:MM(08:27)

MINUTE(000094),sihm.hh(08),sihm.mm(26)=HH:MM(08:26)

MINUTE(000095),sihm.hh(08),sihm.mm(25)=HH:MM(08:25)

MINUTE(000096),sihm.hh(08),sihm.mm(24)=HH:MM(08:24)

MINUTE(000097),sihm.hh(08),sihm.mm(23)=HH:MM(08:23)

MINUTE(000098),sihm.hh(08),sihm.mm(22)=HH:MM(08:22)

MINUTE(000099),sihm.hh(08),sihm.mm(21)=HH:MM(08:21)

MINUTE(000100),sihm.hh(08),sihm.mm(20)=HH:MM(08:20)

MINUTE(000101),sihm.hh(08),sihm.mm(19)=HH:MM(08:19)

MINUTE(000102),sihm.hh(08),sihm.mm(18)=HH:MM(08:18)

MINUTE(000103),sihm.hh(08),sihm.mm(17)=HH:MM(08:17)

MINUTE(000104),sihm.hh(08),sihm.mm(16)=HH:MM(08:16)

MINUTE(000105),sihm.hh(08),sihm.mm(15)=HH:MM(08:15)

MINUTE(000106),sihm.hh(08),sihm.mm(14)=HH:MM(08:14)

MINUTE(000107),sihm.hh(08),sihm.mm(13)=HH:MM(08:13)

MINUTE(000108),sihm.hh(08),sihm.mm(12)=HH:MM(08:12)

MINUTE(000109),sihm.hh(08),sihm.mm(11)=HH:MM(08:11)

MINUTE(000110),sihm.hh(08),sihm.mm(10)=HH:MM(08:10)

MINUTE(000111),sihm.hh(08),sihm.mm(09)=HH:MM(08:09)

MINUTE(000112),sihm.hh(08),sihm.mm(08)=HH:MM(08:08)

MINUTE(000113),sihm.hh(08),sihm.mm(07)=HH:MM(08:07)

MINUTE(000114),sihm.hh(08),sihm.mm(06)=HH:MM(08:06)

MINUTE(000115),sihm.hh(08),sihm.mm(05)=HH:MM(08:05)

MINUTE(000116),sihm.hh(08),sihm.mm(04)=HH:MM(08:04)

MINUTE(000117),sihm.hh(08),sihm.mm(03)=HH:MM(08:03)

MINUTE(000118),sihm.hh(08),sihm.mm(02)=HH:MM(08:02)

MINUTE(000119),sihm.hh(08),sihm.mm(01)=HH:MM(08:01)

MINUTE(000120),sihm.hh(08),sihm.mm(00)=HH:MM(08:00)

MINUTE(000121),sihm.hh(07),sihm.mm(59)=HH:MM(07:59)

MINUTE(000122),sihm.hh(07),sihm.mm(58)=HH:MM(07:58)

MINUTE(000123),sihm.hh(07),sihm.mm(57)=HH:MM(07:57)

MINUTE(000124),sihm.hh(07),sihm.mm(56)=HH:MM(07:56)

MINUTE(000125),sihm.hh(07),sihm.mm(55)=HH:MM(07:55)

MINUTE(000126),sihm.hh(07),sihm.mm(54)=HH:MM(07:54)

MINUTE(000127),sihm.hh(07),sihm.mm(53)=HH:MM(07:53)

MINUTE(000128),sihm.hh(07),sihm.mm(52)=HH:MM(07:52)

MINUTE(000129),sihm.hh(07),sihm.mm(51)=HH:MM(07:51)

MINUTE(000130),sihm.hh(07),sihm.mm(50)=HH:MM(07:50)

MINUTE(000131),sihm.hh(07),sihm.mm(49)=HH:MM(07:49)

MINUTE(000132),sihm.hh(07),sihm.mm(48)=HH:MM(07:48)

MINUTE(000133),sihm.hh(07),sihm.mm(47)=HH:MM(07:47)

MINUTE(000134),sihm.hh(07),sihm.mm(46)=HH:MM(07:46)

MINUTE(000135),sihm.hh(07),sihm.mm(45)=HH:MM(07:45)

MINUTE(000136),sihm.hh(07),sihm.mm(44)=HH:MM(07:44)

MINUTE(000137),sihm.hh(07),sihm.mm(43)=HH:MM(07:43)

MINUTE(000138),sihm.hh(07),sihm.mm(42)=HH:MM(07:42)

MINUTE(000139),sihm.hh(07),sihm.mm(41)=HH:MM(07:41)

MINUTE(000140),sihm.hh(07),sihm.mm(40)=HH:MM(07:40)

MINUTE(000141),sihm.hh(07),sihm.mm(39)=HH:MM(07:39)

MINUTE(000142),sihm.hh(07),sihm.mm(38)=HH:MM(07:38)

MINUTE(000143),sihm.hh(07),sihm.mm(37)=HH:MM(07:37)

MINUTE(000144),sihm.hh(07),sihm.mm(36)=HH:MM(07:36)

MINUTE(000145),sihm.hh(07),sihm.mm(35)=HH:MM(07:35)

MINUTE(000146),sihm.hh(07),sihm.mm(34)=HH:MM(07:34)

MINUTE(000147),sihm.hh(07),sihm.mm(33)=HH:MM(07:33)

MINUTE(000148),sihm.hh(07),sihm.mm(32)=HH:MM(07:32)

MINUTE(000149),sihm.hh(07),sihm.mm(31)=HH:MM(07:31)

MINUTE(000150),sihm.hh(07),sihm.mm(30)=HH:MM(07:30)

MINUTE(000151),sihm.hh(07),sihm.mm(29)=HH:MM(07:29)

MINUTE(000152),sihm.hh(07),sihm.mm(28)=HH:MM(07:28)

MINUTE(000153),sihm.hh(07),sihm.mm(27)=HH:MM(07:27)

MINUTE(000154),sihm.hh(07),sihm.mm(26)=HH:MM(07:26)

MINUTE(000155),sihm.hh(07),sihm.mm(25)=HH:MM(07:25)

MINUTE(000156),sihm.hh(07),sihm.mm(24)=HH:MM(07:24)

MINUTE(000157),sihm.hh(07),sihm.mm(23)=HH:MM(07:23)

MINUTE(000158),sihm.hh(07),sihm.mm(22)=HH:MM(07:22)

MINUTE(000159),sihm.hh(07),sihm.mm(21)=HH:MM(07:21)

MINUTE(000160),sihm.hh(07),sihm.mm(20)=HH:MM(07:20)

MINUTE(000161),sihm.hh(07),sihm.mm(19)=HH:MM(07:19)

MINUTE(000162),sihm.hh(07),sihm.mm(18)=HH:MM(07:18)

MINUTE(000163),sihm.hh(07),sihm.mm(17)=HH:MM(07:17)

MINUTE(000164),sihm.hh(07),sihm.mm(16)=HH:MM(07:16)

MINUTE(000165),sihm.hh(07),sihm.mm(15)=HH:MM(07:15)

MINUTE(000166),sihm.hh(07),sihm.mm(14)=HH:MM(07:14)

MINUTE(000167),sihm.hh(07),sihm.mm(13)=HH:MM(07:13)

MINUTE(000168),sihm.hh(07),sihm.mm(12)=HH:MM(07:12)

MINUTE(000169),sihm.hh(07),sihm.mm(11)=HH:MM(07:11)

MINUTE(000170),sihm.hh(07),sihm.mm(10)=HH:MM(07:10)

MINUTE(000171),sihm.hh(07),sihm.mm(09)=HH:MM(07:09)

MINUTE(000172),sihm.hh(07),sihm.mm(08)=HH:MM(07:08)

MINUTE(000173),sihm.hh(07),sihm.mm(07)=HH:MM(07:07)

MINUTE(000174),sihm.hh(07),sihm.mm(06)=HH:MM(07:06)

MINUTE(000175),sihm.hh(07),sihm.mm(05)=HH:MM(07:05)

MINUTE(000176),sihm.hh(07),sihm.mm(04)=HH:MM(07:04)

MINUTE(000177),sihm.hh(07),sihm.mm(03)=HH:MM(07:03)

MINUTE(000178),sihm.hh(07),sihm.mm(02)=HH:MM(07:02)

MINUTE(000179),sihm.hh(07),sihm.mm(01)=HH:MM(07:01)

MINUTE(000180),sihm.hh(07),sihm.mm(00)=HH:MM(07:00)

MINUTE(000181),sihm.hh(06),sihm.mm(59)=HH:MM(06:59)

MINUTE(000182),sihm.hh(06),sihm.mm(58)=HH:MM(06:58)

MINUTE(000183),sihm.hh(06),sihm.mm(57)=HH:MM(06:57)

MINUTE(000184),sihm.hh(06),sihm.mm(56)=HH:MM(06:56)

MINUTE(000185),sihm.hh(06),sihm.mm(55)=HH:MM(06:55)

MINUTE(000186),sihm.hh(06),sihm.mm(54)=HH:MM(06:54)

MINUTE(000187),sihm.hh(06),sihm.mm(53)=HH:MM(06:53)

MINUTE(000188),sihm.hh(06),sihm.mm(52)=HH:MM(06:52)

MINUTE(000189),sihm.hh(06),sihm.mm(51)=HH:MM(06:51)

MINUTE(000190),sihm.hh(06),sihm.mm(50)=HH:MM(06:50)

MINUTE(000191),sihm.hh(06),sihm.mm(49)=HH:MM(06:49)

MINUTE(000192),sihm.hh(06),sihm.mm(48)=HH:MM(06:48)

MINUTE(000193),sihm.hh(06),sihm.mm(47)=HH:MM(06:47)

MINUTE(000194),sihm.hh(06),sihm.mm(46)=HH:MM(06:46)

MINUTE(000195),sihm.hh(06),sihm.mm(45)=HH:MM(06:45)

MINUTE(000196),sihm.hh(06),sihm.mm(44)=HH:MM(06:44)

MINUTE(000197),sihm.hh(06),sihm.mm(43)=HH:MM(06:43)

MINUTE(000198),sihm.hh(06),sihm.mm(42)=HH:MM(06:42)

MINUTE(000199),sihm.hh(06),sihm.mm(41)=HH:MM(06:41)

MINUTE(000200),sihm.hh(06),sihm.mm(40)=HH:MM(06:40)

MINUTE(000201),sihm.hh(06),sihm.mm(39)=HH:MM(06:39)

MINUTE(000202),sihm.hh(06),sihm.mm(38)=HH:MM(06:38)

MINUTE(000203),sihm.hh(06),sihm.mm(37)=HH:MM(06:37)

MINUTE(000204),sihm.hh(06),sihm.mm(36)=HH:MM(06:36)

MINUTE(000205),sihm.hh(06),sihm.mm(35)=HH:MM(06:35)

MINUTE(000206),sihm.hh(06),sihm.mm(34)=HH:MM(06:34)

MINUTE(000207),sihm.hh(06),sihm.mm(33)=HH:MM(06:33)

MINUTE(000208),sihm.hh(06),sihm.mm(32)=HH:MM(06:32)

MINUTE(000209),sihm.hh(06),sihm.mm(31)=HH:MM(06:31)

MINUTE(000210),sihm.hh(06),sihm.mm(30)=HH:MM(06:30)

MINUTE(000211),sihm.hh(06),sihm.mm(29)=HH:MM(06:29)

MINUTE(000212),sihm.hh(06),sihm.mm(28)=HH:MM(06:28)

MINUTE(000213),sihm.hh(06),sihm.mm(27)=HH:MM(06:27)

MINUTE(000214),sihm.hh(06),sihm.mm(26)=HH:MM(06:26)

MINUTE(000215),sihm.hh(06),sihm.mm(25)=HH:MM(06:25)

MINUTE(000216),sihm.hh(06),sihm.mm(24)=HH:MM(06:24)

MINUTE(000217),sihm.hh(06),sihm.mm(23)=HH:MM(06:23)

MINUTE(000218),sihm.hh(06),sihm.mm(22)=HH:MM(06:22)

MINUTE(000219),sihm.hh(06),sihm.mm(21)=HH:MM(06:21)

MINUTE(000220),sihm.hh(06),sihm.mm(20)=HH:MM(06:20)

MINUTE(000221),sihm.hh(06),sihm.mm(19)=HH:MM(06:19)

MINUTE(000222),sihm.hh(06),sihm.mm(18)=HH:MM(06:18)

MINUTE(000223),sihm.hh(06),sihm.mm(17)=HH:MM(06:17)

MINUTE(000224),sihm.hh(06),sihm.mm(16)=HH:MM(06:16)

MINUTE(000225),sihm.hh(06),sihm.mm(15)=HH:MM(06:15)

MINUTE(000226),sihm.hh(06),sihm.mm(14)=HH:MM(06:14)

MINUTE(000227),sihm.hh(06),sihm.mm(13)=HH:MM(06:13)

MINUTE(000228),sihm.hh(06),sihm.mm(12)=HH:MM(06:12)

MINUTE(000229),sihm.hh(06),sihm.mm(11)=HH:MM(06:11)

MINUTE(000230),sihm.hh(06),sihm.mm(10)=HH:MM(06:10)

MINUTE(000231),sihm.hh(06),sihm.mm(09)=HH:MM(06:09)

MINUTE(000232),sihm.hh(06),sihm.mm(08)=HH:MM(06:08)

MINUTE(000233),sihm.hh(06),sihm.mm(07)=HH:MM(06:07)

MINUTE(000234),sihm.hh(06),sihm.mm(06)=HH:MM(06:06)

MINUTE(000235),sihm.hh(06),sihm.mm(05)=HH:MM(06:05)

MINUTE(000236),sihm.hh(06),sihm.mm(04)=HH:MM(06:04)

MINUTE(000237),sihm.hh(06),sihm.mm(03)=HH:MM(06:03)

MINUTE(000238),sihm.hh(06),sihm.mm(02)=HH:MM(06:02)

MINUTE(000239),sihm.hh(06),sihm.mm(01)=HH:MM(06:01)

MINUTE(000240),sihm.hh(06),sihm.mm(00)=HH:MM(06:00)

MINUTE(000241),sihm.hh(05),sihm.mm(59)=HH:MM(05:59)

MINUTE(000242),sihm.hh(05),sihm.mm(58)=HH:MM(05:58)

MINUTE(000243),sihm.hh(05),sihm.mm(57)=HH:MM(05:57)

MINUTE(000244),sihm.hh(05),sihm.mm(56)=HH:MM(05:56)

MINUTE(000245),sihm.hh(05),sihm.mm(55)=HH:MM(05:55)

MINUTE(000246),sihm.hh(05),sihm.mm(54)=HH:MM(05:54)

MINUTE(000247),sihm.hh(05),sihm.mm(53)=HH:MM(05:53)

MINUTE(000248),sihm.hh(05),sihm.mm(52)=HH:MM(05:52)

MINUTE(000249),sihm.hh(05),sihm.mm(51)=HH:MM(05:51)

MINUTE(000250),sihm.hh(05),sihm.mm(50)=HH:MM(05:50)

MINUTE(000251),sihm.hh(05),sihm.mm(49)=HH:MM(05:49)

MINUTE(000252),sihm.hh(05),sihm.mm(48)=HH:MM(05:48)

MINUTE(000253),sihm.hh(05),sihm.mm(47)=HH:MM(05:47)

MINUTE(000254),sihm.hh(05),sihm.mm(46)=HH:MM(05:46)

MINUTE(000255),sihm.hh(05),sihm.mm(45)=HH:MM(05:45)

MINUTE(000256),sihm.hh(05),sihm.mm(44)=HH:MM(05:44)

MINUTE(000257),sihm.hh(05),sihm.mm(43)=HH:MM(05:43)

MINUTE(000258),sihm.hh(05),sihm.mm(42)=HH:MM(05:42)

MINUTE(000259),sihm.hh(05),sihm.mm(41)=HH:MM(05:41)

MINUTE(000260),sihm.hh(05),sihm.mm(40)=HH:MM(05:40)

MINUTE(000261),sihm.hh(05),sihm.mm(39)=HH:MM(05:39)

MINUTE(000262),sihm.hh(05),sihm.mm(38)=HH:MM(05:38)

MINUTE(000263),sihm.hh(05),sihm.mm(37)=HH:MM(05:37)

MINUTE(000264),sihm.hh(05),sihm.mm(36)=HH:MM(05:36)

MINUTE(000265),sihm.hh(05),sihm.mm(35)=HH:MM(05:35)

MINUTE(000266),sihm.hh(05),sihm.mm(34)=HH:MM(05:34)

MINUTE(000267),sihm.hh(05),sihm.mm(33)=HH:MM(05:33)

MINUTE(000268),sihm.hh(05),sihm.mm(32)=HH:MM(05:32)

MINUTE(000269),sihm.hh(05),sihm.mm(31)=HH:MM(05:31)

MINUTE(000270),sihm.hh(05),sihm.mm(30)=HH:MM(05:30)

MINUTE(000271),sihm.hh(05),sihm.mm(29)=HH:MM(05:29)

MINUTE(000272),sihm.hh(05),sihm.mm(28)=HH:MM(05:28)

MINUTE(000273),sihm.hh(05),sihm.mm(27)=HH:MM(05:27)

MINUTE(000274),sihm.hh(05),sihm.mm(26)=HH:MM(05:26)

MINUTE(000275),sihm.hh(05),sihm.mm(25)=HH:MM(05:25)

MINUTE(000276),sihm.hh(05),sihm.mm(24)=HH:MM(05:24)

MINUTE(000277),sihm.hh(05),sihm.mm(23)=HH:MM(05:23)

MINUTE(000278),sihm.hh(05),sihm.mm(22)=HH:MM(05:22)

MINUTE(000279),sihm.hh(05),sihm.mm(21)=HH:MM(05:21)

MINUTE(000280),sihm.hh(05),sihm.mm(20)=HH:MM(05:20)

MINUTE(000281),sihm.hh(05),sihm.mm(19)=HH:MM(05:19)

MINUTE(000282),sihm.hh(05),sihm.mm(18)=HH:MM(05:18)

MINUTE(000283),sihm.hh(05),sihm.mm(17)=HH:MM(05:17)

MINUTE(000284),sihm.hh(05),sihm.mm(16)=HH:MM(05:16)

MINUTE(000285),sihm.hh(05),sihm.mm(15)=HH:MM(05:15)

MINUTE(000286),sihm.hh(05),sihm.mm(14)=HH:MM(05:14)

MINUTE(000287),sihm.hh(05),sihm.mm(13)=HH:MM(05:13)

MINUTE(000288),sihm.hh(05),sihm.mm(12)=HH:MM(05:12)

MINUTE(000289),sihm.hh(05),sihm.mm(11)=HH:MM(05:11)

MINUTE(000290),sihm.hh(05),sihm.mm(10)=HH:MM(05:10)

MINUTE(000291),sihm.hh(05),sihm.mm(09)=HH:MM(05:09)

MINUTE(000292),sihm.hh(05),sihm.mm(08)=HH:MM(05:08)

MINUTE(000293),sihm.hh(05),sihm.mm(07)=HH:MM(05:07)

MINUTE(000294),sihm.hh(05),sihm.mm(06)=HH:MM(05:06)

MINUTE(000295),sihm.hh(05),sihm.mm(05)=HH:MM(05:05)

MINUTE(000296),sihm.hh(05),sihm.mm(04)=HH:MM(05:04)

MINUTE(000297),sihm.hh(05),sihm.mm(03)=HH:MM(05:03)

MINUTE(000298),sihm.hh(05),sihm.mm(02)=HH:MM(05:02)

MINUTE(000299),sihm.hh(05),sihm.mm(01)=HH:MM(05:01)

bash-3.1$

bash-3.1$

bash-3.1$

*/

+ Recent posts